126 votes

Comment puis-je corriger « pour la déclaration initiale de boucle utilisée à l’extérieur C99 mode » erreur GCC ?

Je suis en train de résoudre le 3n +1 problème et j’ai un `` boucle qui ressemble à ceci :

Malheureusement, j’obtiens cette erreur lorsque j’essaie de compiler avec GCC :

3np1.c:15 : erreur : « pour » boucle déclaration initiale utilisée en dehors de la mode de C99

Je ne sais pas ce qui est mode de C99. Toutes les idées ?

160voto

OysterD Points 2698

Je voudrais essayer de déclarer `` en dehors de la boucle !

Bonne chance pour résoudre 3n +1  :-)

125voto

JamesSugrue Points 8426

Il y a un commutateur de compilateur qui active le mode de C99, permettant entre autres de déclaration d’une variable à l’intérieur de la boucle for. Pour mettre en marche l’utilisation du commutateur de compilation``

Ou comme le dit @OysterD, déclarez la variable en dehors de la boucle.

14voto

Blorgbeard Points 38991

J’ai obtenu cette erreur trop.

n’est pas valide dans la norme C89/C90. Comme le dit OysterD, vous devez faire :

Votre code d’origine est autorisé dans C99 et normes ultérieures du langage C.

13voto

Imran Points 20117

@Blorgbeard:

De nouvelles Fonctionnalités en C99

  • les fonctions inline
  • la déclaration de la variable n'est plus limitée à la portée du fichier ou le début d'une instruction composée
  • plusieurs nouveaux types de données, y compris à long long int, prolongée en option les types integer, explicite le type de données booléen, et un type complexe à représenter des nombres complexes
  • de longueur variable tableaux
  • soutien pour une ligne de commentaires commençant par //, comme dans BCPL ou C++
  • les nouvelles fonctions de la bibliothèque, comme snprintf
  • de nouveaux fichiers d'en-tête, comme stdbool.h et inttypes.h
  • type générique de fonctions mathématiques (tgmath.h)
  • prise en charge améliorée pour en virgule flottante IEEE
  • désigné initialiseurs
  • composé littéraux
  • soutien pour les variadic macros (macros d'arité variable)
  • restreindre la qualification afin de permettre à plus agressives d'optimisation de code

http://en.wikipedia.org/wiki/C99

Un Tour de C99

6voto

Roberto Cuadros Points 13

Si vous compilez en changement de C

À

Vous pouvez également compiler avec le jeu de commutateur de C99. Mis -std = c99 dans la ligne de compilation :

Réf : http://cplusplus.syntaxerrors.info/index.php?title=« pour » _loop_initial_declaration_used_outside_C99_mode

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X