
Lev Lafayette <lev@levlafayette.com> wrote:
test.c:
#include <stdio.h> int main(void) { int linux = 5; return 0; }
...
It still occurs if I omit the inclusion of stdio.h, so I'd describe it as a compiler bug.
Compilers have manifest defines that may intrude into the default namespace. It's sometimes useful in portable code Not seeing linux defines directly in the gcc -dumpspecs output though #linux $ gcc -E tmp.c # 1 "tmp.c" # 1 "<built-in>" # 1 "<command-line>" # 1 "tmp.c" int 1 = 5; $ gcc -Ulinux -E tmp.c # 1 "tmp.c" # 1 "<built-in>" # 1 "<command-line>" # 1 "tmp.c" int linux = 5; $ gcc -undef -E tmp.c # 1 "tmp.c" # 1 "<built-in>" # 1 "<command-line>" # 1 "tmp.c" int linux = 5; $ gcc -v Using built-in specs. Target: powerpc-ibm-aix5.3.0.0 .... $ gcc -E tmp.c # 1 "tmp.c" # 1 "<built-in>" # 1 "<command-line>" # 1 "tmp.c" int linux = 5;