今天我发现了一件有趣的事情,我不知道不能在 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.)
这背后的逻辑是什么?我听到 不能在 switch 的 case 语句中创建变量了。由于 JUMP 与 goto 语句的作用域(在我的例子中是 main 函数的作用域)相同,所以我认为作用域在这里不是问题。但是,为什么我会得到这个错误呢?