PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Warum nutzt gcc defaultmäßig nicht den C99 Standard


Gast
2007-10-06, 09:24:32
Wenn man gcc mit den optionen
-ansi -pedantic -Wall

ausführt, dann wird der Code auf C90 kompatibilität geprüft.
D.h. so etwas wie:


int
main (int argc, char *argv[])
{
int i, n = argc;
double x[n];

for (i = 0; i < n; i++)
x[i] = i;

return 0;
}


funktioniert nicht.


Entfernt man das -pedantic und verwendet stattdessen -std=c99 dann wird der Code akzeptiert.


Die Frage lautet also, warum richtet sich die Option -pedantic immer noch an c90?

Code wie oben ist doch seit c99 erlaubt, oder?



Das leider auch nicht funktioniert ist der Kommaoperator //
wenn man die -ansi Option verwendet.

Dieser Operator geht erst, wenn man anstatt -ansi
-std=c99 verwendet.

Warum ist das so?
c99 ist doch selbst ansi , daher müßte der // Operator doch auch mit der -ansi option funktionieren.

Oder ist auch hier wieder der Fall, daß -ansi nur c90 ist?

Gast
2007-10-06, 09:25:12
Noch etwas.

Das Beispiel von oben wird auch hier besprochen:
http://www.network-theory.co.uk/docs/gccintro/gccintro_28.html

Grestorn
2007-10-06, 09:30:26
Vermutlich um die Rückwärtskompatibilität der Compilerschalter zu gewährleisten: Was schon immer mit -ansi compiliert hat, soll das auch weiterhin tun.

Man vermeidet normalerweise die genaue Funktionsweise von Schaltern zu ändern.