web-dev-qa-db-fra.com

erreur: les déclarations initiales de la boucle "pour" ne sont autorisées qu'en mode C99

Je reçois l'erreur ci-dessous, quel est le mode std = c99/std = gnu99?

code source:

#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

Cela est dû au fait que la déclaration de variables dans une boucle for n'était pas valide C jusqu'à C99 (qui est la norme de C publiée en 1999). Vous pouvez donc déclarer votre compteur en dehors de pour comme indiqué par d'autres ou utiliser l'indicateur -std = c99 de dire explicitement au compilateur que vous utilisez cette norme et qu'il devrait l'interpréter comme tel.

23
Alejandro Díaz

Vous devez déclarer la variable j utilisée pour la première boucle for avant la boucle.

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

La solution la plus simple du "Prof. Dr. Michael Helbig". il passera votre mode à c99 afin que vous n'ayez pas à ajouter d'indicateur à chaque fois dans le fichier make http://www.bigdev.de/2014/10/Eclipse-cc-for-loop-initial .html? showComment = 1447925473870 # c6845437481920903532

Solution: utilisez l'option -std = c99 pour votre compilateur! Allez à: Projet> Propriétés> Buils C/C++> Paramètres> Paramètres d’outil> Compilateur GCC C> Dialecte> Langage standard: choisissez "ISO C99"

1
Kashif