编译器找不到预处理器指令(定义)
Preprocessor directive (define) not found by compiler
我正在开发一个库,其中一些变量的大小取决于 #define 和一些根据其他 #define 的值创建的 #define。
例如
int variable1[SIZE_USER]
#if SIZE_USER>3
#define CONDITION 1
#else
#define CONDITION 0
#endif
这个想法是,当用户想要使用库时,他们会在那里创建自己的头文件,其中包含所有需要的预处理器指令 (#define),并在 [=29= 所在的同一目录中使用该文件] 文件不在库源文件中。
问题是,当我将配置文件(包含所有#define)包含在我的所有库头文件所在的同一目录中时,我没有问题。
即
#include <config.h>
//My Library Code...
但是,如果我在我的库的源文件之外声明配置头文件,编译器将找不到在 "main.cpp" 文件中声明的#define。
即
#include<config.h>
#include<myLibrary.h>
//User code...
关于编译器的工作原理,我是否明显遗漏了什么?
#define SIZE_USER 4
int variable1[SIZE_USER]
#if SIZE_USER > 3
#define CONDITION 1
#else
#define CONDITION 0
#endif
第一个问题是 #if 指令中缺少空格。
#include "myLibrary.h"
第二个问题:使用 "" 作为您包含的 headers 并且空格很重要。
我正在开发一个库,其中一些变量的大小取决于 #define 和一些根据其他 #define 的值创建的 #define。
例如
int variable1[SIZE_USER]
#if SIZE_USER>3
#define CONDITION 1
#else
#define CONDITION 0
#endif
这个想法是,当用户想要使用库时,他们会在那里创建自己的头文件,其中包含所有需要的预处理器指令 (#define),并在 [=29= 所在的同一目录中使用该文件] 文件不在库源文件中。
问题是,当我将配置文件(包含所有#define)包含在我的所有库头文件所在的同一目录中时,我没有问题。
即
#include <config.h>
//My Library Code...
但是,如果我在我的库的源文件之外声明配置头文件,编译器将找不到在 "main.cpp" 文件中声明的#define。
即
#include<config.h>
#include<myLibrary.h>
//User code...
关于编译器的工作原理,我是否明显遗漏了什么?
#define SIZE_USER 4
int variable1[SIZE_USER]
#if SIZE_USER > 3
#define CONDITION 1
#else
#define CONDITION 0
#endif
第一个问题是 #if 指令中缺少空格。
#include "myLibrary.h"
第二个问题:使用 "" 作为您包含的 headers 并且空格很重要。