我正在开发一个库,其中一些变量的大小取决于 #define 和一些 #define,它们是根据其他 #define 的值创建的。
例如
int variable1[SIZE_USER]
#if SIZE_USER>3
#define CONDITION 1
#else
#define CONDITION 0
#endif
这个想法是,当用户想要使用库时,他们创建自己的头文件,其中包含所需的所有预处理器指令(#define),并在“main.cpp”文件所在的同一目录中使用此文件,而不是在库源文件中。
问题是,当我将配置文件(其中包含所有#define)包含在库的所有头文件所在的同一目录中时,我没有问题。
IE
#include <config.h>
//My Library Code...
但是,如果我在库的源文件之外声明配置头文件,编译器将找不到在“main.cpp”文件中声明的#define。
IE
#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"
第二个问题:对包含的标题和空格使用 "" 很重要。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句