errore C2143: errore di syntax: mancante ‘;’ prima di ‘digitare’

Sono nuovo di programmazione C .. per favore dimmi cosa c’è di sbagliato in questo programma, e perché sto ricevendo questo errore: errore C2143: errore di syntax: mancante ‘;’ prima di ‘digitare’ ….

extern void func(); int main(int argc, char ** argv){ func(); int i=1; for(;i<=5; i++) { register int number = 7; printf("number is %d\n", number++); } getch(); } 

Non ho usato visual in almeno 8 anni, ma sembra che il supporto del compilatore C limitato di Visual non permetta il codice misto e le variabili. La riga dell’errore nella dichiarazione per int i=1; ?? Prova a spostarlo sopra la chiamata a func();

Inoltre, extern void func(void);

Visual Studio supporta solo C89. Ciò significa che tutte le variabili devono essere dichiarate prima di qualsiasi altra cosa nella parte superiore di una funzione.

EDIT: @KeithThompson mi ha spinto a aggiungere una descrizione più accurata dal punto di vista tecnico (e in realtà correggo solo dove il mio non è per un aspetto). Tutte le dichiarazioni (di variabili o di qualsiasi altra cosa) devono precedere tutte le affermazioni all’interno di un blocco.

Questo:

 int i=1; for(;i<=5; i++) { 

dovrebbe essere scritto in modo idiomatico come:

 for(int i=1; i<=5; i++) { 

perché non c'è motivo di dichiarare la variabile loop nello scope della funzione.