Jak naprawić błąd GCC "for loop initial declaration used outside C99 mode"?
Próbuję rozwiązać problem 3n+1 i mam pętlę for
, która wygląda tak:
for(int i = low; i <= high; ++i)
{
res = runalg(i);
if (res > highestres)
{
highestres = res;
}
}
Niestety dostaję ten błąd, gdy próbuję skompilować z GCC:
Nie wiem co to jest tryb C99. Jakieś pomysły?3np1.c: 15: error:' for ' loop initial deklaracja używana poza trybem C99
10 answers
Starałbym się zadeklarować i
poza pętlą!
Powodzenia w rozwiązywaniu 3N+1: -)
Oto przykład:
#include <stdio.h>
int main() {
int i;
/* for loop execution */
for (i = 10; i < 20; i++) {
printf("i: %d\n", i);
}
return 0;
}
Więcej informacji na temat pętli for W C tutaj .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-08 07:20:39
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ą.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-15 09:39:45
Aby przełączyć się na tryb C99 w CodeBlocks , wykonaj następujące kroki:
Kliknij Project / Build options, Następnie w zakładce Compiler Settings Wybierz subtab Other options i umieść -std=c99
w obszarze tekstowym, a następnie kliknij Ok.
Spowoduje to włączenie trybu C99 dla Twojego kompilatora.
Mam nadzieję, że to komuś pomoże!Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-02 12:17:30
Też mam ten błąd.
for (int i=0;i<10;i++) { ..
Nie obowiązuje w standardzie C89/C90. Jak mówi Osterd, musisz zrobić:
int i;
for (i=0;i<10;i++) { ..
Twój oryginalny kod jest dozwolony w C99 i późniejszych standardach języka C.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-13 01:25:37
Nowe funkcje w C99
- Funkcje inline
- deklaracja zmiennej nie ogranicza się już do zakresu Pliku ani do początku instrukcji złożonej
- kilka nowych typów danych, w tym long long int, opcjonalne rozszerzone typy całkowite, jawny typ danych boolean i typ złożony do reprezentowania liczb złożonych
- tablice o zmiennej długości
- wsparcie dla komentarzy jednolinijkowych zaczynających się od//, jak w BCPL lub C++
- nowe funkcje biblioteczne, takie jak snprintf
- nowe pliki nagłówkowe, takie jak stdbool.h i intypy.h
- Typ-ogólne funkcje matematyczne (tgmath.h)
- Ulepszone wsparcie dla zmiennoprzecinkowego IEEE
- wyznaczone inicjalizatory
- literały złożone
- wsparcie dla makr zmiennych (makra zmiennej arity)
- ogranicz kwalifikację, aby umożliwić bardziej agresywny kod optymalizacja
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:18
Jeśli skompilujesz w C Zmień
for (int i=0;i<10;i++) { ..
Do
int i;
for (i=0;i<10;i++) { ..
Można również skompilować za pomocą zestawu przełączników C99. Put-std = c99 w linii kompilacji:
gcc -std=c99 foo.c -o foo
REF: http://cplusplus.syntaxerrors.info/index.php?title='for'_loop_initial_declaration_used_outside_c99_mode
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-08 05:25:12
Dla Qt-creator: dodaj kolejne wiersze do pliku*. pro...
QMAKE_CFLAGS_DEBUG = \
-std=gnu99
QMAKE_CFLAGS_RELEASE = \
-std=gnu99
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-29 14:27:19
Miałem ten sam problem i działa Wystarczy zadeklarować i
poza pętlą:
int i;
for(i = low; i <= high; ++i)
{
res = runalg(i);
if (res > highestres)
{
highestres = res;
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-12 23:32:33
Dla każdego, kto próbuje skompilować kod z zewnętrznego źródła, które używa automatycznego narzędzia do budowania, takiego jak Make , Aby uniknąć konieczności śledzenia jawnych wywołań kompilacji gcc, możesz ustawić zmienną środowiskową. Wprowadź w wierszu polecenia lub włóż .bashrc (or .bash_profile na Mac):
export CFLAGS="-std=c99"
Zauważ, że podobne rozwiązanie ma zastosowanie, jeśli napotkasz podobny scenariusz z kompilacją C++, która wymaga C++ 11, możesz użyć:
export CXXFLAGS="-std=c++11"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-27 15:37:50
Wystarczy skompilować w trybie C++. Nie musisz używać klas, aby używać C++. W zasadzie używam C++ jako "ładniejszego C":)
Prawie nigdy nie używam klas i nigdy nie używam metody overiding.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-21 13:52:50