(预处理器)C ++中的全局变量错误

时间:2013-09-20 23:47:40

标签: c++ c-preprocessor global

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

#define DRAWING_OBJECTS_COUNT 2

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

 DoubleTapResetUnit * unitList[DRAWING_OBJECTS_COUNT];

1 个答案:

答案 0 :(得分:1)

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

  1. DRAWING_OBJECTS_COUNT正在通过在定义#undef之后但在HeaderB尝试使用它之前编译的某些代码获得DRAWING_OBJECTS_COUNT

    < / LI>
  2. 你在HeaderA和HeaderB之间有一个循环引用,其中HeaderA包含HeaderB,反之亦然,但HeaderB在HeaderA有机会定义DRAWING_OBJECTS_COUNT之前正在处理。避免在头文件中使用循环引用。