啊包含:
#define DRAWING_OBJECTS_COUNT 4
了Bh包含:
#include "A.h"
int arrayExample[DRAWING_OBJECTS_COUNT];
當我嘗試這一點,控制檯說,
DRAWING_OBJECTS_COUNT
在B類是未定義。
讓B班知道A班常數的最好方法是什麼? 另外,預處理器指令是否僅適用於寫入的文件?
啊包含:
#define DRAWING_OBJECTS_COUNT 4
了Bh包含:
#include "A.h"
int arrayExample[DRAWING_OBJECTS_COUNT];
當我嘗試這一點,控制檯說,
DRAWING_OBJECTS_COUNT
在B類是未定義。
讓B班知道A班常數的最好方法是什麼? 另外,預處理器指令是否僅適用於寫入的文件?
由於它已發佈,代碼應該工作(這並不意味着它是很好的代碼,雖然)。您的問題可能是一個通告(最有可能),或後續#undef
。
讓B班知道A班常數的最好方法是什麼?
改爲使用const int
,或者使用enum
值 - 定義是如此老派。
此外,預處理器指令是否僅適用於寫入的文件?
它取決於 - 如果在文件中定義,它從聲明的起點開始適用於該翻譯單元 - 這意味着您可以在標題中定義它,並且它將在包含該標題的文件中可見。您還可以使用編譯器選項定義預處理器指令,這使得它們對於編譯的所有文件都可見。
預處理器指令不知道範圍。在#define之後的每個符號都將被替換,不管文件,類,等等,直到您獲得該符號的#undef
,或直到編譯器讀取了所有輸入。
如果要以某種方式指示DRAWING_OBJECTS_COUNT
與A類相關,請在A中將其聲明爲const int
或enum
。
您可以發佈確切的錯誤消息和源代碼行,並檢查#undef
s。並確保你是包括A.h
謝謝Luchian Grigore! – CodeDoctorJL