【发布时间】:2018-11-18 07:50:21
【问题描述】:
举个例子:
#define FOO
FOO #define BAR 1
BAR
根据 ANSI C 和 C99 标准,上述代码的预处理输出应该是什么?
在我看来,这应该评估为1;但是,通过gcc -E 和clang -E 运行上述示例会产生以下结果:
#define BAR 1
BAR
【问题讨论】:
-
#应该是指令行中的第一个非空格字符,否则会被忽略 -
@qrdl:它不会被忽略:它会产生错误,因为
#在预处理后不是有效的令牌。 -
@rici 显然编译器会抱怨它,但是 OP 在这里只谈论 CPP,而 CPP 忽略它。
标签: c c-preprocessor preprocessor