C: for loop int Erstdeklaration
Kann mal jemand näher auf die folgenden gcc-Fehler?
$ gcc -o Ctutorial/temptable.out temptable.c
temptable.c: In function ‘main’:
temptable.c:5: error: ‘for’ loop initial declaration used outside C99 mode
temptable.c:
...
/* print Fahrenheit-Celsius Table */
main()
{
for(int i = 0; i <= 300; i += 20)
{
printf("F=%d C=%d\n",i, (i-32) / 9);
}
}
P. S: ich vage erinnern, dass int i
sollten deklariert werden, bevor eine for
Schleife. Sollte ich feststellen, dass ich bin auf der Suche nach einer Antwort, gibt einen historischen Kontext von C-standard.
InformationsquelleAutor der Frage Midnight Blue | 2009-08-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
ist eine syntax, die eingeführt wurde in C99. Um es zu verwenden müssen Sie aktivieren C99-Modus durch die übergabe
-std=c99
(oder etwas später-standard) GCC. Der C89-version:BEARBEITEN
Historisch gesehen, ist die C-Sprache immer gezwungen, Programmierer deklarieren Sie alle Variablen am Anfang eines Blocks. So etwas wie:
müssen umgeschrieben werden als:
ein block ist definiert als:
C99, C++, C# und Java erlauben die Deklaration von Variablen, die irgendwo in einem block.
Den wahren Grund (raten) wird über die Zuweisung von internen Strukturen (wie die Berechnung des stack-Größe) so schnell wie möglich beim Parsen der C-Quelle, ohne einen weiteren compiler-pass.
InformationsquelleAutor der Antwort dfa
Bevor C99, Sie hatte zu definieren, der die lokalen Variablen am Anfang eines Blocks. C99 eingeführten C++ - Funktion, können Sie intermix lokalen Variablen mit den Anweisungen und Sie können Variablen definieren, die in der
for
undwhile
Kontrolle Ausdrücken.InformationsquelleAutor der Antwort AProgrammer