複雑なステートメントがあり、s の末尾にswitch
a を付けるのを忘れていました。これは非常に合法であり、その結果、次の.break
case
case
break
私が声明を出すのを怠った場合、gccに警告する(またはもっと良いことに失敗する)方法はありますか?
この質問に例示されているように、多くの有効なユースケースがあることを認識しています (そして、コードで頻繁に使用しています)。ここで抜けたい」
gccにこれを行うように指示する方法はありますか?
複雑なステートメントがあり、s の末尾にswitch
a を付けるのを忘れていました。これは非常に合法であり、その結果、次の.break
case
case
break
私が声明を出すのを怠った場合、gccに警告する(またはもっと良いことに失敗する)方法はありますか?
この質問に例示されているように、多くの有効なユースケースがあることを認識しています (そして、コードで頻繁に使用しています)。ここで抜けたい」
gccにこれを行うように指示する方法はありますか?
このような機能 (-Wswitch-break) に関する議論がhttp://gcc.gnu.org/bugzilla/show_bug.cgi?id=7652にあります。しかし、まだ実装されていないようです
このチェックは、C および C++ コード用の無料の静的アナライザーであるCppcheckで利用できます。--experimental
このチェックは現在「実験的」とマークされているため、コマンド ライン スイッチを使用してオンにする必要があります。
break
このチェックは、continue
、return
、 などの制御フロー ステートメントなしで次のcaseにフォールスルーする空でないcase 節に対して警告します。// fall through
case
ソースコードのswitchFallThroughCase
テストケースを見ると、これが処理する構造の種類についてのアイデアを得ることができます。
私はちょうどgccオプションを調べましたが、少なくとも通知を与えるものはありません. -Wswitch、-Wswitch-default、および -Wswitch-enum ( http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options ) がありますが、どれも機能しません。
私の最善の策は、「else if」ステートメントを使用することです
break
grep/perl/emacs/etc の正規表現を作成して、 beforeがないすべての場所を見つけることができますcase
。
簡単な答えはノーです。gcc にはそのようなフラグはありません。フォールスルーには switch case がより頻繁に使用されるため、gcc でそのようなフラグを使用しても意味がありません。