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) {}
[編集] 関連
| C++ のドキュメント (
fallthrough) |