Ich versuche das 3n + 1-Problem zu lösen und habe eine for
Schleife, die so aussieht:
for(int i = low; i <= high; ++i)
{
res = runalg(i);
if (res > highestres)
{
highestres = res;
}
}
Leider wird dieser Fehler angezeigt, wenn ich versuche, mit GCC zu kompilieren:
3np1.c: 15: Fehler: Die anfängliche Deklaration der 'for'-Schleife wird außerhalb des C99-Modus verwendet
Ich weiß nicht, was der C99-Modus ist. Irgendwelche Ideen?
Es gibt einen Compiler-Schalter, der den C99-Modus aktiviert , der unter anderem die Deklaration einer Variablen innerhalb der for-Schleife ermöglicht. Verwenden Sie zum Einschalten den Compiler-Schalter
-std=c99
Oder deklarieren Sie, wie @OysterD sagt, die Variable außerhalb der Schleife.
quelle
Führen Sie die folgenden Schritte aus, um in CodeBlocks in den C99- Modus zu wechseln :
Klicken Sie auf Projekt- / Erstellungsoptionen, wählen Sie dann auf der Registerkarte Compilereinstellungen die Unterregisterkarte Andere Optionen aus , platzieren Sie sie
-std=c99
im Textbereich und klicken Sie auf OK .Dadurch wird der C99- Modus für Ihren Compiler aktiviert.
Ich hoffe das hilft jemandem!
quelle
-std=gnu99
wie in einigen Antworten oben dargestellt verwendet habe!Ich habe diesen Fehler auch bekommen.
ist im C89 / C90-Standard nicht gültig. Wie OysterD sagt, müssen Sie Folgendes tun:
Ihr Originalcode ist in C99 und späteren Standards der C-Sprache zulässig.
quelle
@ Blorgbeard :
Neue Funktionen in C99
http://en.wikipedia.org/wiki/C99
Eine Tour von C99
quelle
wenn Sie in C ändern kompilieren
zu
Sie können auch mit dem Schalter C99 kompilieren. Fügen Sie -std = c99 in die Kompilierungszeile ein:
REF: http://cplusplus.syntaxerrors.info/index.php?title= 'for'_loop_initial_declaration_used_outside_C99_mode
quelle
Für alle, die versuchen, Code aus einer externen Quelle zu kompilieren, die ein automatisiertes Build-Dienstprogramm wie Make verwendet , können Sie eine Umgebungsvariable festlegen, um zu vermeiden, dass die expliziten gcc-Kompilierungsaufrufe aufgespürt werden müssen. Geben Sie an der Eingabeaufforderung ein oder geben Sie .bashrc (oder .bash_profile auf dem Mac) ein:
Beachten Sie, dass eine ähnliche Lösung gilt, wenn Sie auf ein ähnliches Szenario mit C ++ - Kompilierung stoßen, für das C ++ 11 erforderlich ist. Sie können Folgendes verwenden:
quelle
Ich hatte das gleiche Problem und es funktioniert. Sie müssen nur die
i
Außenseite der Schleife deklarieren :quelle
Jihene Stambouli beantwortete die OP-Frage am direktesten ... Die Frage war; warum tut
den Fehler erzeugen;
für die die Antwort ist
sollte sein
quelle
Aktivieren Sie den C99-Modus in Code :: Blocks 16.01
quelle
Für Qt-Creator: Fügen Sie einfach die nächsten Zeilen zur * .pro-Datei hinzu ...
quelle