Fehler: Anfangsdeklarationen der ‘for’-Schleife sind nur im C99-Modus erlaubt [duplicate]
Lesezeit: 2 Minuten
Rajits Rajan
Ich erhalte die folgende Fehlermeldung, was ist der Modus std=c99/std=gnu99?
Quellcode:
#include <stdio.h>
void funct(int[5]);
int main()
{
int Arr[5]={1,2,3,4,5};
funct(Arr);
for(int j=0;j<5;j++)
printf("%d",Arr[j]);
}
void funct(int p[5]) {
int i,j;
for(i=6,j=0;i<11;i++,j++)
p[j]=i;
}
Error Message:
hello.c: In function ‘main’:
hello.c:11:2: error: ‘for’ loop initial declarations are only allowed in C99 mode
for(int j=0;j<5;j++)
^
hello.c:11:2: note: use option -std=c99 or -std=gnu99 to compile your code`
Sie müssen entweder j außerhalb der for-Schleife deklarieren oder mit der Option -std=c99 kompilieren, wie in den Fehlermeldungen angegeben.
– Loocid
30. März 2015 um 4:03 Uhr
Alejandro Diaz
Dies liegt daran, dass das Deklarieren von Variablen innerhalb einer for-Schleife bis C99 (dem 1999 veröffentlichten C-Standard) nicht gültig war. Sie können Ihren Zähler entweder außerhalb des for deklarieren, wie von anderen angegeben, oder verwenden Sie die -std=c99 -Flag, um dem Compiler explizit mitzuteilen, dass Sie diesen Standard verwenden und er ihn als solchen interpretieren soll.
Vielen Dank Alejandro. Könnten Sie mir bitte sagen, wie man das Flag -std=c99 in der Linux-Kompilierung verwendet?
– Rajits Rajan
30. März 2015 um 4:18 Uhr
@ Rajitsrajan füge einfach hinzu -std=c99 zu Ihrer Befehlszeile dh gcc main.c -o main -std=c99
– Alejandro Diaz
30. März 2015 um 4:21 Uhr
Sie müssen die Variable j, die für die erste for-Schleife verwendet wird, vor der Schleife deklarieren.
Lösung: Verwenden Sie die Option -std=c99 für Ihren Compiler! Gehen Sie zu: Project > Properties > C/C++ Buils > Settings > Tool Settings > GCC C Compiler > Dialect > Language Standard: wählen Sie “ISO C99”
Dies wird funktionierender Code sein
#include <stdio.h>
void funct(int[5]);
int main()
{
int Arr[5]={1,2,3,4,5};
int j = 0;
funct(Arr);
for(j=0;j<5;j++)
printf("%d",Arr[j]);
}
void funct(int p[5]){
int i,j;
for(i=6,j=0;i<11;i++,j++)
p[j]=i;
}
13859200cookie-checkFehler: Anfangsdeklarationen der ‘for’-Schleife sind nur im C99-Modus erlaubt [duplicate]yes
Sie müssen entweder j außerhalb der for-Schleife deklarieren oder mit der Option -std=c99 kompilieren, wie in den Fehlermeldungen angegeben.
– Loocid
30. März 2015 um 4:03 Uhr