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?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage