需要#ifdef查询和澄清

时间:2012-02-16 16:15:01

标签: c

我看到如下构造:

#ifdef FOO || defined BAR
...
#endif

和编译器的投诉“警告:#ifdef指令末尾的额外令牌”,显然它应该是:

#if defined FOO || defined BAR
...
#endif

标准是否明确说明了?你能指出相关部分吗?

1 个答案:

答案 0 :(得分:5)

在C99中, 6.10预处理指令,第1段是语法:

if-group:
# if constant-expression new-line groupopt
# ifdef identifier new-line groupopt
# ifndef identifier new-line groupopt

它显示您的第一个构造#ifdef不正确,因为只有标识符可以跟在#ifdef之后,不允许使用常量表达式。