10

複雑なステートメントがあり、s の末尾にswitcha を付けるのを忘れていました。これは非常に合法であり、その結果、次の.breakcasecase

break私が声明を出すのを怠った場合、gccに警告する(またはもっと良いことに失敗する)方法はありますか?

この質問に例示されているように、多くの有効なユースケースがあることを認識しています (そして、コードで頻繁に使用しています)。ここで抜けたい」

gccにこれを行うように指示する方法はありますか?

4

6 に答える 6

6

このような機能 (-Wswitch-break) に関する議論がhttp://gcc.gnu.org/bugzilla/show_bug.cgi?id=7652にあります。しかし、まだ実装されていないようです

于 2011-10-09T12:14:42.517 に答える
4

このチェックは、C および C++ コード用の無料の静的アナライザーであるCppcheckで利用できます。--experimentalこのチェックは現在「実験的」とマークされているため、コマンド ライン スイッチを使用してオンにする必要があります。

breakこのチェックは、continuereturn、 などの制御フロー ステートメントなしで次のcaseにフォールスルーする空でないcase 節に対して警告します。// fall throughcase

ソースコードのswitchFallThroughCaseテストケースを見ると、これが処理する構造の種類についてのアイデアを得ることができます。

于 2012-01-25T23:36:05.170 に答える
2

私はちょうどgccオプションを調べましたが、少なくとも通知を与えるものはありません. -Wswitch、-Wswitch-default、および -Wswitch-enum ( http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options ) がありますが、どれも機能しません。

私の最善の策は、「else if」ステートメントを使用することです

于 2011-10-09T12:15:16.883 に答える
1

breakgrep/perl/emacs/etc の正規表現を作成して、 beforeがないすべての場所を見つけることができますcase

于 2011-10-09T12:17:45.350 に答える
0

簡単な答えはノーです。gcc にはそのようなフラグはありません。フォールスルーには switch case がより頻繁に使用されるため、gcc でそのようなフラグを使用しても意味がありません。

于 2011-10-09T12:23:45.230 に答える