J'essaye de résoudre le problème 3n + 1 et j'ai une for
boucle qui ressemble à ceci:
for(int i = low; i <= high; ++i)
{
res = runalg(i);
if (res > highestres)
{
highestres = res;
}
}
Malheureusement, j'obtiens cette erreur lorsque j'essaye de compiler avec GCC:
3np1.c: 15: erreur: déclaration initiale de la boucle 'for' utilisée en dehors du mode C99
Je ne sais pas ce qu'est le mode C99. Des idées?
Il existe un commutateur de compilateur qui active le mode C99 , qui permet entre autres de déclarer une variable dans la boucle for. Pour l'activer, utilisez le commutateur du compilateur
-std=c99
Ou comme @OysterD le dit, déclarez la variable en dehors de la boucle.
la source
Pour passer en mode C99 dans CodeBlocks , procédez comme suit:
Cliquez sur Options de projet / construction , puis dans l'onglet Paramètres du compilateur, choisissez le sous-onglet Autres options , et placez-le
-std=c99
dans la zone de texte, puis cliquez sur OK .Cela va tourner C99 mode pour votre compilateur.
J'espère que cela aidera quelqu'un!
la source
-std=gnu99
comme décrit dans certaines réponses ci-dessus!J'ai aussi eu cette erreur.
n'est pas valide dans la norme C89 / C90. Comme le dit OysterD, vous devez faire:
Votre code d'origine est autorisé dans les normes C99 et ultérieures du langage C.
la source
@Blorgbeard :
Nouvelles fonctionnalités du C99
http://en.wikipedia.org/wiki/C99
Une visite de C99
la source
si vous compilez en C changez
à
Vous pouvez également compiler avec le jeu de commutateurs C99. Mettez -std = c99 dans la ligne de compilation:
REF: http://cplusplus.syntaxerrors.info/index.php?title= 'for'_loop_initial_declaration_used_outside_C99_mode
la source
Pour quiconque tente de compiler du code à partir d'une source externe qui utilise un utilitaire de construction automatisé tel que Make , pour éviter d'avoir à traquer les appels de compilation explicites gcc, vous pouvez définir une variable d'environnement. Entrez sur l'invite de commande ou mettez .bashrc (ou .bash_profile sur Mac):
Notez qu'une solution similaire s'applique si vous exécutez un scénario similaire avec une compilation C ++ qui nécessite C ++ 11, vous pouvez utiliser:
la source
J'ai eu le même problème et ça marche il suffit de déclarer l'
i
extérieur de la boucle:la source
Jihene Stambouli a répondu plus directement à la question de l'OP ... La question était; pourquoi
produire l'erreur;
pour lequel la réponse est
devrait être
la source
Activer le mode C99 dans Code :: Blocks 16.01
la source
Pour Qt-creator: ajoutez simplement les lignes suivantes au fichier * .pro ...
la source