我看到如下结构:
#ifdef FOO || defined BAR
...
#endif
Run Code Online (Sandbox Code Playgroud)
和编译器的投诉"警告:#ifdef指令末尾的额外令牌",显然它应该是:
#if defined FOO || defined BAR
...
#endif
Run Code Online (Sandbox Code Playgroud)
标准是否明确说明了?你能指出相关部分吗?
在C99,6.10 预处理指令中,第1段是语法:
if-group:
# if constant-expression new-line groupopt
# ifdef identifier new-line groupopt
# ifndef identifier new-line groupopt
Run Code Online (Sandbox Code Playgroud)
它显示您的第一个构造#ifdef不正确,因为只有标识符可以跟随#ifdef,不允许使用常量表达式.