2015-03-30 5 views
7

Otrzymuję poniższy błąd, co to jest tryb std = c99/std = gnu99?błąd: deklaracje początkowe pętli "dla" są dozwolone tylko w trybie C99

Kod źródłowy:

#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` 
+2

Musisz zadeklarować j poza pętlą for lub skompilować używając -std = opcja c99, taka jak stany komunikatów o błędach. – Loocid

Odpowiedz

16

Dzieje się tak dlatego, deklarowania zmiennych wewnątrz pętli for nie była ważna C aż C99 (co jest standardem C opublikowana w 1999 roku), można zadeklarować swój licznik na zewnątrz tak wskazał innych lub użyj flagi -std = c99, aby wyraźnie powiedzieć kompilatorowi, że używasz tego standardu i powinien on interpretować go jako taki.

+1

Wielkie dzięki Alejandro. Czy chciałbyś mi powiedzieć, jak używać flagi -std = c99 w kompilacji linux? –

+2

@Rajitsrajan po prostu dodaj '-std = c99' do linii poleceń, np.' Gcc main.c -o main -std = c99' –

1

trzeba zadeklarować zmienną j używany pierwszy pętli przed pętli.

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

ta zostanie kod roboczych

#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; 
    } 
+1

Pomocne byłoby wyjaśnienie OP. – Jamal

0

najprostszym rozwiązaniem przez "Prof. dr Michael Helbig". przełączy twój tryb na c99, więc nie musisz dodawać flagi za każdym razem w pliku make http://www.bigdev.de/2014/10/eclipse-cc-for-loop-initial.html?showComment=1447925473870#c6845437481920903532 Rozwiązanie: użyj opcji -std = c99 dla kompilatora! Idź do: Projekt> Właściwości> Bufory C/C++> Ustawienia> Ustawienia narzędzi> Kompilator GCC C> Dialekt> Standard językowy: wybierz "ISO C99"

Powiązane problemy