在C ++中的每个案例步骤中使用自动中断switch语句

Switch statement with automatic break at each case step in C++

如果我们想要一个switch语句,在这里我们需要为每种情况运行一些指令,那么break我们需要这样做:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
switch (condition) {
   case (opt1):
      // do stuff
      break;
   case (opt2):
      // do stuff
      break;
   case (opt3):  
      // do stuff
      break;
   // ...
   default:
      // do stuff
}

有没有可能有一个互斥的开关,而不通过,在默认情况下,每个选项都应该中断,而不必显式地声明中断指令?如果C++中没有这个概念,是否可以用其他命令语言?

  • 没有这样的流控制,因为switch语句被设计为允许fallthrough。如果你想避免使用break,你可以使用ifelse ifelse(以轻微的性能损失为代价)。
  • 要做到这一点,你就必须消除失败,你为什么要这样做?这是一个太方便的功能。
  • 为了提高代码的可读性,比如说行空间,我可能需要swich语句的派生形式。作为扩展语言功能。
  • @vee6 any idea if such a feature is available in other imperative languages?帕斯卡/德尔菲


C也需要break,但如果你不把它放在上面,就对你大喊大叫。你需要用goto label;来明确地通过。

在C++中,没有办法做到这一点(当然,除了可怕的宏)。但是,clang得到了-Wimplicit-fallthrough的警告。然后,您可以插入[[clang::fallthrough]];,以消除针对故意失误的警告。

文档:http://clang.llvm.org/docs/attributereference.html fallthrough clang fallthrough


"没有自动坠落"在戈兰。https://golang.org/doc/effective_go.html开关