2013-09-20 61 views
0

所以我的問題是,爲什麼會這樣,當我有一個包含「全局變量」頭文件:(預處理器)的C++全局變量錯誤

#define DRAWING_OBJECTS_COUNT 2 

我的另一個頭文件不能識別標識「 DRAWING_OBJECTS_COUNT「?:

DoubleTapResetUnit * unitList[DRAWING_OBJECTS_COUNT]; 
+1

包含事項的順序。 – us2012

+0

我認爲使用'const int'比'#define'更適合這樣的事情。 – shuttle87

+0

'#define'不創建全局變量,它定義了一個宏。 – Barmar

回答

1

你有一個頭,讓我們把它叫做HeaderA,定義DRAWING_OBJECTS_COUNT,你有另一頭,讓我們把它叫做HeaderB,使用DRAWING_OBJECTS_COUNT,是這樣嗎? HeaderB必須通過#include聲明(直接或間接)包含HeaderA,以便使用HeaderA的聲明。如果你是這樣做的,但HeaderB依然沒能理解什麼DRAWING_OBJECTS_COUNT是,則有兩種可能性,我能想到的:

  1. DRAWING_OBJECTS_COUNT越來越#undef「一些一段代碼被編譯編在定義了DRAWING_OBJECTS_COUNT之後,但在HeaderB嘗試使用它之前。

  2. 您在HeaderA和HeaderB之間有一個循環引用,其中HeaderA包含HeaderB,反之亦然,但HeaderB在HeaderA有機會定義DRAWING_OBJECTS_COUNT之前得到處理。避免在頭文件中使用循環引用。