名前空間
変種
操作

C 属性: fallthrough (C23 以降)

From cppreference.com
< c‎ | language‎ | attributes

前の case ラベルからのフォールスルーが意図的であることを示し、フォールスルーに関する警告を出すコンパイラによって診断されないようにします。

目次

[編集] 構文

[[ fallthrough ]]
[[ __fallthrough__ ]]

[編集] 説明

フォールスルー宣言 ([[fallthrough]];) を作成するために、属性宣言でのみ使用できます。

フォールスルー宣言は、switch ステートメントでのみ使用できます。その switch ステートメントの case または default ラベルを持つステートメント、宣言、またはラベルが次に続く場合です。

前の 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) {}

[編集] 関連

English 日本語 中文(简体) 中文(繁體)