neuer standard oder gcc spezifisch
-
ich bin mit dem glauben aufgewachsen, dass man unter C alle variablen zu Beginn eines Blocks deklarieren muss.
Nun habe ich zufällig diese Regel verletzt und ärgerte mich schon den Kompiliervorgang bereits eingeleitet gehabt zu haben, aber siehe da, er hats ohne meckern geschluckt.
Es wurde mit gcc (3.3.4.) kompiliert und das File hatte eine ".c"-Endung. Macht das jetzt nur der gcc, weils bei c++ ja auch geht, oder ist das in irgend einem neueren C-standard so festgelegt?
-
Der C99 Standard erlaubt es und der gcc kompiliert doch nur nach C++ Regeln mit entsprechenden Parametern, afaik.
-
In C99.
-
main() { printf("das ist (kein) C89\n"); int fehler; return 0; }
thomas@a147097:~/dev/tmp$ gcc -ansi -pedantic-errors c89.c
c89.c: In function `main':
c89.c:3: error: ISO C90 forbids mixed declarations and code
-
Da steht ja auch ISO C90 (entspricht vermutlich ANSI-C89) und nicht ISO-C99