如何在C++ switch语句中跳过指定case并从目标case执行?
高效实现方案:使用
goto case直接跳转 针对你的场景,最直接且高效的方式就是在case 5的条件分支里用goto case 3;,完全匹配你的需求——99%的正常流程不受影响,仅触发特殊条件时跳过case 4:
switch (bits_remaining) { case 5: if (CallFunction()) { // 处理该条件的逻辑 goto case 3; // 直接跳转到case3,跳过case4 } else { // case5的常规代码 } [[fallthrough]]; // 正常情况继续执行case4 case 4: // case4的代码 [[fallthrough]]; case 3: // case3的代码 [[fallthrough]]; case 2: // case2的代码 [[fallthrough]]; case 1: // case1的代码 [[fallthrough]]; }
为什么这个方案高效?
- 99%的场景下,
CallFunction()返回false,代码按正常贯穿逻辑执行,没有额外判断或跳转开销,完全保留原有性能。 - 仅在1%的特殊场景下,通过
goto case直接跳转到case3,跳转操作本身极快,不会引入性能损耗。
为什么不推荐其他方案?
- 在case4中加跳过判断:会让99%的正常流程多一次条件判断,违背你对性能的要求。
- 重排case顺序:会破坏
bits_remaining从5到1递减的逻辑连贯性,增加代码维护成本。
内容的提问来源于stack exchange,提问作者The Welder
相关产品推荐
相关产品推荐

