C++ 属性: fallthrough (C++17 起)

来自cppreference.com
< cpp‎ | language‎ | attributes

指示从前一标号落下是有意的,而在落下时警告的编译器不应诊断它。

[编辑] 语法

[[fallthrough]]

[编辑] 解释

仅可应用到空语句以创建落下语句 ([[fallthrough]];) 。落下语句仅可用于 switch 语句中,其中待执行的下个语句是该 switch 语句的带 case 或 default 标号的语句。指示从前一标号落下是有意的,而在落下时警告的编译器不应诊断它。

[编辑] 示例

void f(int n) {
  void g(), h(), i();
  switch (n) {
    case 1:
    case 2:
      g();
     [[fallthrough]];
    case 3: // 落下时不警告
      h();
    case 4: // 编译器可在落下时警告
      if(n < 3) {
          i();
          [[fallthrough]]; // OK
      }
      else {
          return;
      }
    case 5:
      [[fallthrough]]; // 病式,无后继的 case 或 default 标号
  }
}