0

所以我的问题是,为什么当我包含一个包含“全局变量”的头文件时:

#define DRAWING_OBJECTS_COUNT 2

我的其他头文件无法识别“DRAWING_OBJECTS_COUNT”?:

 DoubleTapResetUnit * unitList[DRAWING_OBJECTS_COUNT];
4

1 回答 1

1

你有一个标题,我们称它为 HeaderA,它定义了DRAWING_OBJECTS_COUNT,你有另一个标题,我们称之为 HeaderB,它使用DRAWING_OBJECTS_COUNT,对吗?HeaderB 必须通过#include语句(直接或间接)包含 HeaderA 才能使用 HeaderA 的声明。如果您正在这样做,但 HeaderB 仍然无法理解是什么DRAWING_OBJECTS_COUNT,那么我可以想到两种可能性:

  1. DRAWING_OBJECTS_COUNT正在被一些在定义之后但在 HeaderB 尝试使用它之前编译的代码得到#undef'ed 。DRAWING_OBJECTS_COUNT

  2. 您在 HeaderA 和 HeaderB 之间有一个循环引用,其中 HeaderA 包括 HeaderB ,反之亦然,但 HeaderB 在 HeaderA 有机会定义DRAWING_OBJECTS_COUNT. 避免头文件中的循环引用。

于 2013-09-20T23:57:13.723 回答