不能从switch语句跳转到这个case标签
跳过旁路变量的初始化
当时我是这么写的
switch(val){
case 1:
...
break;
case 2:
int b = 1;
...
break;
case 3:
...
break;
default:
break;
}
在case 3
和default
处,系统提示了标题所示的2个错误。
最后发现是我在分支里面初始化了变量。
同样的代码在VS里面叫做
错误 C2360 “b”的初始化操作由“case”标签跳过
错误 C2361 “default”标签跳过“b”的初始化操作
解决方法
1、最简单就是把case用{}括起来
case 2:{
int b = 1;
...
break;
}
2、把相关操作放到一个函数里面,也方便浏览
case 2:
func();
break;
3、把初始化放到switch之前
int b;
switch(val){
case 2:
b = 1;
...
break;
default:
break;
}