webentwicklung-frage-antwort-db.com.de

fehler: Die Initialdeklarationen für die Schleife sind nur im C99-Modus zulässig

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`
13
Rajit s rajan

Dies geschieht, weil das Deklarieren von Variablen in einer for-Schleife bis C99 (dem Standard von C, das 1999 veröffentlicht wurde) nicht gültig war. Sie können entweder Ihren Zähler außerhalb des for deklarieren, wie von anderen angegeben, oder das Flag -std = c99 verwenden Um dem Compiler explizit mitzuteilen, dass Sie diesen Standard verwenden, sollte er als solcher interpretiert werden.

23
Alejandro Díaz

Sie müssen die Variable j deklarieren, die für die erste for-Schleife vor der Schleife verwendet wird.

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

Einfachste Lösung von "Prof. Dr. Michael Helbig". Der Modus wechselt zu c99, sodass Sie nicht jedes Mal in der Make-Datei ein Flag hinzufügen müssen http://www.bigdev.de/2014/10/Eclipse-cc-for-loop-initial. html? showComment = 1447925473870 # c6845437481920903532

Lösung: Verwenden Sie für Ihren Compiler die Option -std = c99! Gehen Sie zu: Projekt> Eigenschaften> C/C++ - Dateien> Einstellungen> Tool-Einstellungen> GCC C-Compiler> Dialekt> Sprachstandard: Wählen Sie "ISO C99".

1
Kashif