On several different version of gcc (2.95, 3.3 and 3.4) (gcc-3.4 --version reports: gcc-3.4 (GCC) 3.4.2 (Debian 3.4.2-2)) When I compile a.c I get errors:
a.c:6: error: parse error before "c" etc but b.c compiles without errors. As I understand the ANSI-C standard, type names and variable names should be separate namespaces - and both programs should compile (borland turbo C 2.01 compiles both programs). ==> a.c <== #include <stdio.h> typedef int i; typedef char c; i main (i c, c ** v) { i i=1; printf("%d\n",c+i); return 0; } ==> b.c <== #include <stdio.h> typedef int i; typedef char c; i main (i C, c ** v) { i i=1; printf("%d\n" C+i); return 0; } -- Summary: name clash in C? Product: gcc Version: 3.4.2 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: jacob at engelbrecht dot dk CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18930