ANSI C gegen andere C-Standards
uf mehreren Compilern, die ich verwendet habe (allgcc
aber verschiedene Versionen) bekomme ich einC99 mode
Fehler für Dinge wie @ deklarierint i
innerhalb des for-Schleifenausdrucks statt davor (wenn ich das @ nicht benutstd=c99
Möglichkeit). Nach dem LesenHie Ich verstehe, dass diegcc
Optionen-ansi
, -std=c89
, und-std=iso9899:1990
Alle nach dem ANSI C-Standard auswerten,aber ich verstehe nicht warum / wenn ich das @ auswählen soc89
Standard im Vergleich zu einem neueren Standard wiec99
(das ist das neueste, von dem ich annehme).
Auch sehe ich mehrere Versionen desiso
type-Standards für die Sprache C, von denen der erste (nach meinem Verständnis) ein direkter Port des ANSI-Standards ist.Ist ist sicher zu sagen, dassiso
wird ihren Standard für C aktualisieren, aber der ursprüngliche ANSI-Standard für C wird immer der gleiche sein?
Bonus-Frage
Ich kann es tatsächlich selbst herausfinden, ich habe mir nur noch nicht die Zeit genommen, es zu tun. Wenn also jemand etwas über den Kopf weiß, dann ist das großartig, sonst kein Problem, ich werde es später herausfinden: )
Ich habe einen ziemlich neuen Druck des BuchesThe C Programming Language (ANSI)
. Mein Buch zeigt immer für Schleifen wie diese:
int i;
for(i = 0; i < foo; i++)
aber viele Leute (die meisten, die mehr Programmiertalent in ihrem kleinen Finger haben) schreiben ihre for-Schleifen wie folgt:
(int i = 0; i < foo; i++)
Ist es richtig zu sagen, wenn ich die Schleife zuerst schreibe, danni
sollte für die gesamte Funktion zugänglich sein, aber wenn ich es auf die zweite Weise schreibe, danni
ist nur für die for-Schleife verfügbarUNGEACHTE Mit welchem Standard kompiliere ich? Eine andere Möglichkeit, die gleiche Frage zu stellen, wenn ich mit dem @ kompiliec89
standard wird dasi
von beiden for-Schleifen kann auf die gesamte Funktion zugegriffen werden und wenn ich mit dem @ kompiliec99
standard wird dasi
der ersten for-Schleife für die gesamte Funktion zugänglich sein, während diei
der zweiten for-Schleife ist nur für die for-Schleife zugänglich?