可能重复:
为什么不能在 switch 语句中声明变量?
我在那里看到,在 C 中,变量的初始化可以通过跳转语句跳过,如下例所示:
/* valid in C but not C++ */
int main()
{
switch (1)
{
case 0:
int foo = 0;
break;
case 1:
++foo;
}
return 0;
}
但是当我尝试用 Comeau 编译器编译它时,会出现错误:
“ComeauTest.c”,第 8 行:错误:声明不能有标签 int foo = 0;^
“ComeauTest.c”,第 5 行:警告:控制转移绕过初始化:变量“foo”(在第 8 行声明)开关 (1) ^