2013-07-02 20 views
0

例如:預處理器指令是否僅適用於寫入的文件?

啊包含:

#define DRAWING_OBJECTS_COUNT 4 

了Bh包含:

#include "A.h" 
int arrayExample[DRAWING_OBJECTS_COUNT]; 

當我嘗試這一點,控制檯說,

DRAWING_OBJECTS_COUNT 

在B類是未定義。

讓B班知道A班常數的最好方法是什麼? 另外,預處理器指令是否僅適用於寫入的文件?

回答

1

由於它已發佈,代碼應該工作(這並不意味着它是很好的代碼,雖然)。您的問題可能是一個通告(最有可能),或後續#undef

讓B班知道A班常數的最好方法是什麼?

改爲使用const int,或者使用enum值 - 定義是如此老派。

此外,預處理器指令是否僅適用於寫入的文件?

它取決於 - 如果在文件中定義,它從聲明的起點開始適用於該翻譯單元 - 這意味着您可以在標題中定義它,並且它將在包含該標題的文件中可見。您還可以使用編譯器選項定義預處理器指令,這使得它們對於編譯的所有文件都可見。

+0

謝謝Luchian Grigore! – CodeDoctorJL

0

預處理器指令不知道範圍。在#define之後的每個符號都將被替換,不管文件,類,等等,直到您獲得該符號的#undef,或直到編譯器讀取了所有輸入。

如果要以某種方式指示DRAWING_OBJECTS_COUNT與A類相關,請在A中將其聲明爲const intenum

您可以發佈確切的錯誤消息和源代碼行,並檢查#undef s。並確保你包括A.h

相關問題