在这个c
程序中
#include<stdio.h>
int main()
{
#if UnDefinedSymbolicConstant==0
printf("UnDefinedSymbolicConstant is equal to 0\n ");
#else
printf("UnDefinedSymbolicConstant is not equal to 0\n");
#endif
return 0;
}
UndefinedSymbolicConstant在任何地方都没有
#define
,但它仍被假定为0,并将output on gcc-4.3.4
表示为:UnDefinedSymbolicConstant is equal to 0
所以,
这是标准行为还是仅在gcc中这样工作?
最佳答案
是的,这由6.10.1中的标准规定:
在执行了由于宏扩展和定义的一元运算符的所有替换之后,所有剩余的标识符(包括那些与关键字相同的词汇)被替换为PP编号0。
关于c - #if是否将 undefined symbol 常量假定为0是标准的吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11329925/