Сегодня я обнаружил одну интересную вещь. Я не знал, что нельзя объявить переменную после метки goto.
Компиляция следующего кода
#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);
}
дает ошибки вроде
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.)
Какова логика этого? Я слышал, что нельзя создавать переменные внутри операторов case switch . Поскольку JUMP находится в той же области (в моем случае, в области действия основной функции) оператора goto, я считаю, что область видимости здесь не является проблемой. Но тогда почему я получаю эту ошибку?