我有幾個配置文件,每個包含一些布爾宏的定義,設置爲0或1.然後,在我的代碼中,我檢查這樣一個宏決定激活哪部分代碼。現在出現了棘手的部分:我想確保包含我的宏定義的頭文件已包含在內。生成一個錯誤,如果選中布爾宏未定義
在以下示例中,如果我忘記包含包含FOO定義的頭文件,編譯器將打印「world!」,而我希望它會生成一個錯誤。
//in the configuration header file
#define FOO 1
//in a cpp file
#if FOO //I would like this to generate an error if I forgot to include the header file
#pragma message "Hello"
#else
#pragma message "world!"
#endif
是否有可能實現這樣的行爲?怎麼樣?
爲了澄清,我不要求how to generate an error if a macro is not defined,但如果是能夠改造#if FOO
線,使得,在同一時間,它會檢查布爾值,並且如果沒有被定義FOO
產生一個錯誤。
有這將是開發者知道他們的代碼應該包含
SPECIAL_MACRO(FOO)
其中,在同一時間,檢查FOO的布爾值,好像它是一個#if FOO
聲明,並防止點他們忘記了包含定義FOO
的標題。
既然C++ 11可以使用'static_assert' –
爲什麼不使用'#ifdef'? – Petr
[如何在C預處理器中生成錯誤和警告?](http:// stackoverflow。com/questions/2221517 /如何生成一個錯誤和警告在c預處理器) –