属性: fallthrough (C++17以上)
提供: cppreference.com
前の case ラベルからのフォールスルーが意図的なものであり、フォールスルーに対して警告するコンパイラによって診断されるべきでないことを示します。
構文
[[fallthrough]]
|
|||||||||
説明
fallthrough 文を作るために空文にのみ適用できます ([[fallthrough]];)。
fallthrough 文は switch 文の中で、次に実行される文がその switch 文のための case または default ラベルを持つ文である場合にのみ使用できます。 fallthrough 文がループ内にある場合は、次の (ラベル付きの) 文はそのループの同じ繰り返しの一部でなければなりません。
前の case ラベルからのフォールスルーが意図的なものであり、フォールスルーに対して警告するコンパイラによって診断されるべきでないことを示します。
例
Run this code
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:
while (false) {
[[fallthrough]]; // ill-formed。 次の文が同じ繰り返しの一部でありません。
}
case 6:
[[fallthrough]]; // ill-formed。 後続の case または default ラベルがありません。
}
}