Сегодня я нашел одну интересную вещь. Я не знал, что нельзя объявлять переменную после метки 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, я считаю, что область не является проблемой здесь. Но почему, почему я получаю эту ошибку?