This question already has answers here:
Closed 2 years ago.
is “unix” restricted keyword in C?
(6个答案)
Why does the C preprocessor interpret the word “linux” as the constant “1”?
(5个答案)
如果我写这个程序-
main(){printf("%d",unix);}

虽然我预期会出现“unix undeclared”或类似的错误,但这会正确编译并打印1。但如果我换成这个-
main(){printf("%d",blah);}

这会产生错误-
error: 'blah' undeclared (first use in this function)

如预期。
那么,为什么unix不会产生错误,为什么它是值1?我试着用谷歌搜索,但什么也没找到。

最佳答案

#undef unix
int main(void)
{printf("%d\n",unix);
return 0;
}

编译失败(即使在#include <stdio.h>之后),因此它必须是一些内置的预处理器~#define编译器输出:
unix.c: In function ‘main’:
unix.c:4:16: error: ‘unix’ undeclared (first use in this function)
 {printf("%d\n",unix);

关于c - 名为“unix”的变量的值为1 [duplicate],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40696613/

10-14 03:05