Ho il seguente codice semplificato:Perché ottengo "un'etichetta può essere solo parte di un'istruzione e una dichiarazione non è un'istruzione" se ho una variabile inizializzata dopo un'etichetta?
#include <stdio.h>
int main()
{
printf("Hello ");
goto Cleanup;
Cleanup:
char *str = "World\n";
printf("%s\n", str);
}
ottengo un errore a causa di una nuova variabile viene dichiarata dopo l'etichetta. Se inserisco il contenuto (principalmente l'inizializzazione) dopo l'etichetta in un blocco {}, la compilazione ha esito positivo.
Penso di aver compreso il motivo del blocco in caso di un interruttore, ma perché dovrebbe essere applicabile in caso di un'etichetta?
Questo errore da un compilatore gcc
Quando si definisce una variabile sotto un'etichetta, è necessario indicare l'ambito della variabile. '' ' #include int main() { printf (" Ciao "); goto Cleanup; Pulizia: { char * str = "Mondo \ n"; printf ("% s \ n", str); } } '' ' –