所以我的問題是,爲什麼會這樣,當我有一個包含「全局變量」頭文件:(預處理器)的C++全局變量錯誤
#define DRAWING_OBJECTS_COUNT 2
我的另一個頭文件不能識別標識「 DRAWING_OBJECTS_COUNT「?:
DoubleTapResetUnit * unitList[DRAWING_OBJECTS_COUNT];
所以我的問題是,爲什麼會這樣,當我有一個包含「全局變量」頭文件:(預處理器)的C++全局變量錯誤
#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
越來越#undef
「一些一段代碼被編譯編在定義了DRAWING_OBJECTS_COUNT
之後,但在HeaderB嘗試使用它之前。
您在HeaderA和HeaderB之間有一個循環引用,其中HeaderA包含HeaderB,反之亦然,但HeaderB在HeaderA有機會定義DRAWING_OBJECTS_COUNT
之前得到處理。避免在頭文件中使用循環引用。
包含事項的順序。 – us2012
我認爲使用'const int'比'#define'更適合這樣的事情。 – shuttle87
'#define'不創建全局變量,它定義了一個宏。 – Barmar