2015-03-30 13 views
7

Mi viene visualizzato l'errore seguente, che cos'è la modalità std = c99/std = gnu99?errore: 'for' le dichiarazioni iniziali del ciclo sono consentite solo in modalità C99

codice sorgente:

#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

È necessario dichiarare j all'esterno del ciclo for oppure compilare utilizzando -std = opzione c99 come indica il messaggio di errore. – Loocid

risposta

16

Questo accade perché la dichiarazione di variabili all'interno di un ciclo for non era valido C fino al C99 (che è lo standard di C pubblicato nel 1999), è possibile dichiarare il vostro contatore di fuori del per come sottolineato da altri o usa il flag -std = c99 per dire esplicitamente al compilatore che stai usando questo standard e che dovrebbe interpretarlo come tale.

+1

Grazie mille Alejandro. Potresti dirmi come usare il flag -std = c99 nella compilation linux ?? –

+2

@Rajitsrajan basta aggiungere '-std = c99' alla riga di comando, ad esempio' gcc main.c -o main -std = c99' –

1

è necessario dichiarare la j variabile utilizzata per la prima per il ciclo prima del ciclo.

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

Questo sarà il codice di lavoro

#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

Una spiegazione per l'OP sarebbe utile. – Jamal

Problemi correlati