Aujourd'hui j'ai trouvé une chose intéressante. Je ne savais pas que l'on ne peut pas déclarer une variable après un goto label.
Compiler le code suivant
#include <stdio.h>
int main() {
int x = 5;
goto JUMP;
printf("x is : %d\n",x);
JUMP:
int a = 0; <=== giving me all sorts of error..
printf("%d",a);
}
donne des erreurs de ce type
temp.c: In function ‘main':
temp.c:7: error: expected expression before ‘int'
temp.c:8: error: ‘a' undeclared (first use in this function)
temp.c:8: error: (Each undeclared identifier is reported only once
temp.c:8: error: for each function it appears in.)
Maintenant, quelle est la logique derrière cela? J'ai entendu dire que l'on ne peut créer des variables à l'intérieur de l'affaire états de l'interrupteur. Depuis le SAUT est à l'intérieur du même champ (le champ d'application de la fonction principale, dans mon cas) de l'instruction goto, je crois que la portée n'est pas un problème ici. Mais alors, pourquoi j'obtiens cette erreur?