为什么GCC中的C预处理器将单词(小写字母)解释为常量?linux
1
test.c:
#include <stdio.h>
int main(void)
{
int linux = 5;
return 0;
}
的结果$ gcc -E test.c
(在预处理阶段之后停止):
....
int main(void)
{
int 1 = 5;
return 0;
}
当然哪个会产生错误。
(顺便说一句:没有#define linux
中stdio.h
的文件。)
#undef linux
,或者使用其他变量?我认为该常数linux
用于测试操作系统,例如,如果您正在设计跨平台应用程序,并且需要确切地知道要使用哪个API(Windows,Mac,Linux,BSD等)。它不在stdio.h中,但是如果内核是linux,它仍然可以定义。相同的代码不应该在Windows中产生一个错误,但使用像Windows或Windows作为变量可能会,反之亦然