新しいバージョンのgccはWimplicit-fallthrough
を提供します。これは、ほとんどのswitchステートメントに最適です。ただし、すべてのケースステートメントからのフォールスルーを許可する1つのswitchステートメントがあります。
明示的なフォールスルーを行う方法はありますか?このファイルをWno-implicit-fallthrough
でコンパイルする必要がないようにしたいと思います。
編集:私はコンパイラのスイッチまたはプラグマを介して警告をオフにしないで、可能であればフォールスルーを明示的にする方法を探しています。
__attribute__ ((fallthrough))
を使用します
switch (condition) {
case 1: __attribute__ ((fallthrough));
case 2: __attribute__ ((fallthrough));
case 3:
printf("1..3\n");
break;
}
GCCフォールグローマジックコメント
あなたはこれを使うべきではありません、それは正気ではありませんが、知っておくと良いでしょう:
int main(int argc, char **argv) {
(void)argv;
switch (argc) {
case 0:
argc = 1;
// fall through
case 1:
argc = 2;
};
}
gCC 7.4.0での警告を防止します。
gcc -Wall -Wextra main.c
man gcc
は、以下の値に応じて、さまざまなコメントがどのように認識されるか、または認識されないかを説明します。
-Wimplicit-fallthrough=n
C++ 17 [[fallthrough]]
属性
C++ 17はこのための標準化された構文を取得しました: GCC 7、-Wimplicit-fallthrough警告、およびそれらをクリアするポータブルな方法?
GCC診断プラグマ を使用して、ソースファイルまたはソースファイルの一部に対する特定の警告を無効にできるはずです。これをファイルの先頭に配置してみてください:
#pragma GCC diagnostic ignored "-Wimplicit-fallthrough"