1
我有以下文件:範圍的#define的無令牌字符串在C/C++
MAIN.C
#include "Header.h"
#define SECRET_NUMBER_ENABLED
int main()
{
printf("Secret number = %d\n", SECRET_NUMBER);
return 0;
}
Header.h
#ifdef SECRET_NUMBER_ENABLED
#define SECRET_NUMBER 111
#else
#define SECRET_NUMBER 222
#endif
打印結果爲:222
據我的理解,預處理器應該掃描Main.c,並將每個SECRET_NUMBER替換爲Header.h中定義的號碼,
而且由於SECRET_NUMBER_ENABLED在Main.c中定義,所以預處理器應該採用111定義而不是222
顯然我錯了,但我不知道爲什麼,不知道如何正確設置它,以便只有中的#define SECRET_NUMBER_ENABLED將使用SECRET_NUMBER 111
是否嘗試在'#include'之前放置'#define SECRET_NUMBER_ENABLED'? – CrApHeR
是的,同樣的結果,雖然我得到編譯警告:警告C4603:'SECRET_NUMBER_ENABLED':宏沒有定義或定義是不同的預編譯頭使用 – amit
我的完整代碼有以下內容: #include「stdafx.h」 #include「Header.h」 當我把它們之間的定義,它的工作原理,當我把2之前的定義包括我得到上面的警告,它不工作,你能解釋爲什麼嗎? – amit