UnDefinedSymbolicConstant

UnDefinedSymbolicConstant

在这个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/

10-10 19:16