Fehler: Anfangsdeklarationen der ‘for’-Schleife sind nur im C99-Modus erlaubt [duplicate]

Lesezeit: 2 Minuten

Benutzer-Avatar
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


Benutzer-Avatar
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.

    int j;
    for(j=0;j<5;j++)
    printf("%d",Arr[j]);

Einfachste Lösung von “Prof. Dr. Michael Helbig” . Es wird Ihren Modus auf c99 umschalten, sodass Sie nicht jedes Mal ein Flag in der Make-Datei hinzufügen müssen
http://www.bigdev.de/2014/10/eclipse-cc-for-loop-initial.html?showComment=1447925473870#c6845437481920903532

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;
    }

1385920cookie-checkFehler: Anfangsdeklarationen der ‘for’-Schleife sind nur im C99-Modus erlaubt [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy