2009-10-10 131 views

回答

6

嚴格來說,編譯器決不會看到使用#define預處理器指令聲明的常量。這些處理由預處理器在文本替換的基礎上處理。他們沒有C++意義上的「類型」,因爲預處理器不知道任何有關C++語言語義的知識。

預處理器使用直接的文本替換策略來解析宏。例如,下面的代碼:

#define FIVE 5 

int a = FIVE; 

編譯器將只能看到:

int a = 5; 

符號FIVE從編譯器看到源不見了。您的編譯器將只能運行預處理器;在GCC中是-E,而在MSVC中是/E or /P。使用這樣的選項,你可以通過預處理器運行你的源代碼,看看它是如何改變的。

相關問題