今天我看到了一些包含以下 #ifdef 条件语句的C++代码:
请注意 "DISABLE_UNTIL" 和 "OTHER_CODE_IS_READY" 之间的空格。本质上,#ifdef 行中指定了两个标记。
我的问题是,这是合法的 C++ 代码吗?(g++ 编译它没有任何错误,它显然只忽略第二个标记)。如果合法,第二个标记是否应该有任何作用?
#ifdef DISABLE_UNTIL OTHER_CODE_IS_READY
foo();
#endif
请注意 "DISABLE_UNTIL" 和 "OTHER_CODE_IS_READY" 之间的空格。本质上,#ifdef 行中指定了两个标记。
我的问题是,这是合法的 C++ 代码吗?(g++ 编译它没有任何错误,它显然只忽略第二个标记)。如果合法,第二个标记是否应该有任何作用?
g++ myprogram.cpp -o myprogram | grep ! warning
- Lightness Races in Orbitgrep
语法错误,gcc将诊断写入stderr
)。无论如何,我认为你在猜测;我想知道OP是如何没有收到警告的。OP:您是否有意禁用警告? - Keith Thompson