今天,我遇到了一個包含這樣#ifdef來子句一些C++代碼:#ifdef帶有多個標記,這是合法的嗎?
#ifdef DISABLE_UNTIL OTHER_CODE_IS_READY
foo();
#endif
注「DISABLE_UNTIL」和「OTHER_CODE_IS_READY」之間的空間。基本上在#ifdef行中指定了兩個標記。
我的問題是,這是合法的C++代碼? (g ++編譯它時沒有任何錯誤,顯然它只是忽略了第二個標記)。如果它是合法的,第二個標記是否有效?
克每++版本我試圖警告這一點,從2.8.1到4.8.1,警告:「警告:'#ifdef'參數結尾的垃圾','警告:#ifdef指令結尾處的額外標記'或'警告:#ifdef指令結尾處的額外標記[默認情況下啓用]」 。你怎麼沒有得到診斷? –
@Keith:'g ++ myprogram.cpp -o myprogram | grep!警告' –
@LightnessRacesinOrbit:這不會過濾掉警告('grep'語法錯誤,gcc將診斷寫入'stderr')。無論如何,我認爲你在猜測;我想知道OP如何未收到警告。 OP:你有意禁用警告嗎? –