不能从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;
}
本文探讨了在使用switch语句时,由于在特定case内初始化变量而引起的编译错误,介绍了三种解决方法:使用花括号括起case块、将相关操作封装到函数中、在switch语句前进行变量声明。
1384

被折叠的 条评论
为什么被折叠?



