Próbuję rozwiązać problem 3n + 1 i mam for
pętlę, która wygląda tak:
for(int i = low; i <= high; ++i)
{
res = runalg(i);
if (res > highestres)
{
highestres = res;
}
}
Niestety pojawia się ten błąd, kiedy próbuję kompilować z GCC:
3np1.c: 15: błąd: początkowa deklaracja pętli „for” używana poza trybem C99
Nie wiem, co to jest tryb C99. Jakieś pomysły?
Istnieje przełącznik kompilatora, który włącza tryb C99 , który między innymi umożliwia deklarację zmiennej wewnątrz pętli for. Aby go włączyć, użyj przełącznika kompilatora
-std=c99
Lub, jak mówi @OysterD, zadeklaruj zmienną poza pętlą.
źródło
Aby przejść do trybu C99 w CodeBlocks , wykonaj następujące kroki:
Kliknij Opcje projektu / kompilacji , a następnie w zakładce Ustawienia kompilatora wybierz pod zakładkę Inne opcje i umieść
-std=c99
w polu tekstowym i kliknij OK .Spowoduje to włączenie trybu C99 dla Twojego kompilatora.
Mam nadzieję, że to komuś pomoże!
źródło
-std=gnu99
jak pokazano w niektórych odpowiedziach powyżej!Otrzymałem również ten błąd.
nie obowiązuje w standardzie C89 / C90. Jak mówi OysterD, musisz zrobić:
Twój oryginalny kod jest dozwolony w C99 i późniejszych standardach języka C.
źródło
@Blorgbeard :
Nowe funkcje w C99
http://en.wikipedia.org/wiki/C99
Wycieczka po C99
źródło
jeśli kompilujesz w C zmień
do
Możesz również skompilować z zestawem przełączników C99. Umieść -std = c99 w wierszu kompilacji:
REF: http://cplusplus.syntaxerrors.info/index.php?title= 'for'_loop_initial_declaration_used_outside_C99_mode
źródło
Dla każdego, kto próbuje skompilować kod z zewnętrznego źródła, które używa zautomatyzowanego narzędzia do kompilacji, takiego jak Make , aby uniknąć konieczności śledzenia jawnych wywołań kompilacji gcc, można ustawić zmienną środowiskową. Wpisz w wierszu polecenia lub wstaw .bashrc (lub .bash_profile na Macu):
Zauważ, że podobne rozwiązanie ma zastosowanie, jeśli napotkasz podobny scenariusz z kompilacją C ++, która wymaga C ++ 11, możesz użyć:
źródło
Miałem ten sam problem i działa, musisz tylko zadeklarować
i
zewnętrzną część pętli:źródło
Jihene Stambouli odpowiedziała na pytanie OP najbardziej bezpośrednio… Pytanie brzmiało; dlaczego
spowodować błąd;
na który odpowiedź brzmi
Powinien być
źródło
Włącz tryb C99 w Code :: Blocks 16.01
źródło
Dla Qt-creator: po prostu dodaj kolejne wiersze do pliku * .pro ...
źródło