5つのエラーの後に停止するようにGCCに指示するにはどうすればよいですか?


80

5つのエラーが見つかった後に停止するようにGNUc ++コンパイラに指示することは可能ですか?ドキュメントでこれを見つけることができません。

回答:


94

コマンドラインオプションは、N個のエラーの後であきらめるようにコンパイラに指示します。このオプションは、GCC4.6以降に存在します。-fmax-errors=N

コマンドラインオプション-Wfatal-errorsは、1つのエラーの後であきらめるようにコンパイラに指示します。このオプションはGCC4.0以降にあります。

どちらの場合も、を指定しない限り、警告は制限にカウントされません-Werror


5
私はこれに+1を与えますが、についてのステートメントのために-Werror。ほとんどの警告はバグのあるコードを示しているため、警告はエラーであるかのように絶対に扱う必要があると思います。
greyfade 2010

3
@greyfade、警告は一般的に修正が必要なものとして扱われるべきだと思いますが、残念ながら、gccの警告の一部は、最適化レベル、システムヘッダーの内容、および簡単に制御できないその他の事項によってはトリガーされる場合とされない場合があります。 。したがって、正規のビルドプラットフォームですべての警告が表示される可能性がありますが、その後、一部の貧弱なシュマックがよりエキゾチックな環境でビルドしようとし、爆発します。
zwol 2010

2
@Zack、それは-Wno-system-headersの目的ではありませんか?
サム・ミラー

2
コンパイラーが-Wuninitialized誤検知を取得する変数を初期化しないことについて私が聞いた議論は次のとおりです。そして、警告を真にポジティブにする何かが変わった場合、valgrindにそれをキャッチしてもらいたいのです。
zwol 2010

3
残念ながら、リンカーは-fmax-errorsフラグを尊重しません(arm-none-eabi-gcc 5.4.1以降)。オプション-finstrument-functionsを使用していましたが、__cyg_profile_func_enter関数が定義されていないために何百ものエラーが発生しました。
lorcap 2017

45

gccオプションを使用できます:

-fmax-errors=5

この目的のために。


9
@Telthienなぜですか?これは私への答えのようです。

13
@Telthien stackoverflow.com/questions/how-to-answerは、「質問者を正しい方向に向かわせる答えはどれでも役に立ちます」と「簡潔さは許容できる」と述べています。回答は解決策を提供するように設計されており、1つの文で達成できる場合もあります。

それが短くて役に立つなら、答えを長くする理由はありません。特に、長すぎたり、tldrを要求したりするためではありません。
n611x007 2013

1
回答を書いてから新しい機能が追加されたことを知らせてくれてありがとう。
zwol 2015

5

私もそのようなオプションを歓迎します。今のところ、最初の5つのエラーを取得するために次の回避策を使用しています。

<make> 2>&1|grep error|head -5

1

私はあなたがこれをしたい理由を尋ねなければなりません。コードに存在するエラーが最初ではない場合や、最初の5つのエラーで見つかった場合もあります。時にはそれを超えており、リストを下にスクロールして初めて認識できます。コンパイル時間に悩まされている場合は、コードを分割して小さなライブラリに配置することをお勧めします。または、コマンドラインの画面からスクロールすることに関心がある場合は、「>>」演算子を使用してメッセージをファイルにパイプします。


1
エラーログの読みやすさの問題です。少なくとも私の場合は、5つのエラーで問題を理解できます:)
yegor256 2010

14
本当に?私の経験は正反対でした-特にC ++では、多くの離散エラーを作成する特定の種類のリファクタリング作業を行っていない限り(たとえば、引数を一般的に使用される方法に変更する)、最初のエラーが発生する可能性がありますまったく役に立たない唯一のもの。
zwol 2010

@ FaZend.comなるほど、その時は無回答でごめんなさい。以下のZackの答えは、これらのエラーを解析し、5つのエラーが出力された後にプロセスを強制終了する小さなスクリプトを作成する場合を除いて、おそらく最善の方法です。(私はこの声明ではまったく無知かもしれませんが。)
ウィーティーズ2010

1
人々はこの問題について非常に限られた想像力を持っているようです。このシナリオはどうですか?プログラムを新しい環境に初めて移植しました。いくつかのエラーが発生し、コンパイルが中止されます。古い環境と新しい環境の間にいくつの非互換性があるのか​​わかりません。知りたいのは、状況がどれほど悪いか、コードに問題がいくつあるかです。すべてのエラーを1つの巨大なリストにまとめて、すべてを修正するのにかかる時間を見積もることができます。
Phill Apley 2013年

4
@PhillApleyそれに関する問題は、単一のエラーがフローオンエラーのカスケードを引き起こすことが多いことです(STLの提案がたくさんあるものもあります)。したがって、エラーと警告の量で判断すると、必要な労力を過大評価して与える可能性があります。アップ。
Evgeni Sergeev 2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.