所以我的问题是,当我包含一个包含“全局变量”的头文件时,为什么呢?
#define DRAWING_OBJECTS_COUNT 2
我的其他头文件无法识别标识“DRAWING_OBJECTS_COUNT”?:
DoubleTapResetUnit * unitList[DRAWING_OBJECTS_COUNT];
答案 0 :(得分:1)
你有一个标题,我们称之为HeaderA,定义DRAWING_OBJECTS_COUNT
,你有另一个标题,让我们称之为HeaderB,使用DRAWING_OBJECTS_COUNT
,是吗? HeaderB必须通过#include
语句(直接或间接)包含HeaderA,以便使用HeaderA的声明。如果你这样做,但是HeaderB仍然无法理解DRAWING_OBJECTS_COUNT
是什么,那么我可以想到两种可能性:
DRAWING_OBJECTS_COUNT
正在通过在定义#undef
之后但在HeaderB尝试使用它之前编译的某些代码获得DRAWING_OBJECTS_COUNT
。
你在HeaderA和HeaderB之间有一个循环引用,其中HeaderA包含HeaderB,反之亦然,但HeaderB在HeaderA有机会定义DRAWING_OBJECTS_COUNT
之前正在处理。避免在头文件中使用循环引用。