【发布时间】:2021-12-24 00:40:39
【问题描述】:
我试图使用goto 语句在不同的switch-cases 之间移动。我知道,最好不要使用goto,因为它会使程序难以理解,但我真的需要它。
这是我的代码的示例版本:
switch(something){
case "c1":
//some code
break;
case "c2":
//some code
break;
case "c3":
if(condition1)
goto case "c1";
if(condition2)
goto case "c2";
default:
break;
}
现在,当我运行代码时,我收到以下错误 error: duplicate case value,它同时适用于 goto case "c1" 和 goto case "c2"。
我不确定为什么编译器会认为 switch-case 上的 goto 正在以相同条件在 switch 语句中重新定义另一个 case 并因此引发重复错误。对此错误的任何帮助和原因表示赞赏。
谢谢!
【问题讨论】:
-
如果你想比较一个字符串,然后根据字符串做一些事情,使用类似
std::map的东西,其中键是字符串,值是你可以的函数对象打电话并“做事”。
标签: c++ switch-statement label goto string-literals