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