命名空间
变体
操作

C 属性: fallthrough (自 C23 起)

来自 cppreference.com
< c‎ | 语言‎ | 属性

指示从先前 case 标签进行的贯穿是故意的,不应由警告贯穿的编译器诊断。

内容

[编辑] 语法

[[ fallthrough ]]
[[ __fallthrough__ ]]

[编辑] 解释

只能在 属性声明 中使用,以创建贯穿声明 ([[fallthrough]];).

贯穿声明只能在 switch 语句中使用,其中要遇到的下一个块项(语句、声明或标签)是具有该 switch 语句的 casedefault 标签的语句。

指示从先前 case 标签进行的贯穿是故意的,不应由警告贯穿的编译器诊断。

[编辑] 示例

#include <stdbool.h>
 
void g(void) {}
void h(void) {}
void i(void) {}
 
void f(int n) {
  switch (n) {
    case 1:
    case 2:
      g();
     [[fallthrough]];
    case 3: // no warning on fallthrough
      h();
    case 4: // compiler may warn on fallthrough
      if(n < 3) {
          i();
          [[fallthrough]]; // OK
      }
      else {
          return;
      }
    case 5:
      while (false) {
        [[fallthrough]]; // ill-formed: no subsequent case or default label
      }
    case 6:
      [[fallthrough]]; // ill-formed: no subsequent case or default label
  }
}
 
int main(void) {}

[编辑] 另请参阅

C++ 文档 对于 fallthrough