Będziesz nadal potrzebował C99, jeśli chcesz mieszać wyciągi i deklaracje zmiennych. Podobnie jak inne odpowiedzi i sam komunikat o błędzie, dodaj -std=c99
do wiersza poleceń, gdy kompilujesz, aby włączyć funkcje C99 [1].
Ale zawsze można było pisać złożoną instrukcję ("blok", IOW, ale standard nigdy nie używa tego słowa!) Zamiast pojedynczego zdania.
#include<stdio.h>
int main() {
int i = 5;
{ /* new block, new declarations. */
int i;
for (i=0;i<10;i++){
}
}
printf("%d\n", i); /* prints "5\n" */
}
To jest legalne w K & R, C90 (aka C89, to jest to samo), i C99.
Włączenie trybu C99 powoduje, że uzyskujesz dużą liczbę cool stuff, ale wyłącza również inne fajne rzeczy, które domyślnie gcc pozwala, takie jak anonimowe struktury i związki w strukturach i związkach.
-std=gnu99
prawdopodobnie pozwala „cały bajerów”, ale ostrożnie, aby uniknąć w ten sposób.Będzie to niepotrzebne utrudnienie, jeśli ty lub inni chcecie przenieść kod. Prawdopodobnie miałbym wersję okienkową mojego projektu dla zwierząt domowych, przeniesioną za darmo przez kogoś, gdybym tego nie zrobił. To wiąże cię z GCC. Nie chcesz być związany. To cały cholerny punkt standardów.
Cóż, może pokazanie kodu byłoby dobrym początkiem. – OldProgrammer
Wyciągnij inicjalizację z pętli for. – Mysticial
Kompilator mówi, jak to naprawić w komunikacie o błędzie. – chris