web-dev-qa-db-ja.com

エラーのメモを表示するg ++を無効にするにはどうすればよいですか?

コンパイル時に、エラーはしばしば長い一連のメモ(シアン)を伴います。これを無効にし、エラー自体のみを表示するg ++フラグはありますか?

4
Jack

コンパイラーはこれを行いませんが、(これまでのところ...)コンパイラー開発者はerror:またはwarning:で警告をマークします。これらに対してgrepstderrを実行すると、最小限の警告/エラー情報が表示されます。

grepは良い出発点です(そして「grep -n」出力はそれ自体で役立ちます)。これらのメッセージは、いくつかのツールに共通するファイル名、行番号、メッセージのパターンに従います。 vi-like-emacs here で使用しました。

ごく最近(2014年)、gcc/g ++はメッセージに「calling-stack」を追加し始め、追加情報が提供されます。これは、-Pオプション( here と表記)でオフにできる行番号を追跡するためのプリプロセッサの変更に依存していますが、フォームに完全に統合されていないようです。呼び出しスタックを抑制します。

Clangを使用しても、これにはあまり役立ちません。非常に冗長な場合もあります。 gcc/g ++開発では、前述のように多くのメッセージが追加されています here

3
Thomas Dickey

コンパイル時、エラーには長いトレース(シアン)が伴うことがよくあります。これを無効にするg ++フラグはありますか?エラー自体を表示していますか?

  • STLFilt のような古いサポートされなくなったツールを使用できます。

  • Clang に切り替えるか、それを使用してエラーのみを報告し、最終的なコンパイルを GNU g ++ で実行できます。

  • 解読を容易にするSTLに慣れることができます。

    STLとその使用方法を十分に理解すると、最初から多くのエラーを回避するのに役立ちます。次に、エラーメッセージがSTLソースの関数を参照することがよくあります。STLの実装方法を大まかに把握している場合、これはエラーメッセージの内容を解読するのに非常に役立ちます。 g ++コンパイラの最新バージョンでは、出力が改善されることがあり、より有用で冗長ではなくなります。

あなたが望むものとは正確には異なりますが、それは出力を短くする可能性があります:

  • -fmax-errorsフラグまたは-Wfatal-errorsオプションを使用します。

    -fmax-errors = n

    エラーメッセージの最大数をnに制限します。この時点で、ソースコードの処理を続行しようとするのではなく、GCCがエラーを解消します。 nが0(デフォルト)の場合、生成されるエラーメッセージの数に制限はありません。 -Wfatal-errorsも指定されている場合、-Wfatal-errorsこのオプションよりも優先されます。

    -Wfatal-errors

    このオプションを使用すると、コンパイラーは、さらにエラーメッセージを表示して出力し続けるのではなく、最初のエラーが発生したときにコンパイルを中止します。

2
Rob