1

ファイルがa.cppありb.cpp、 に警告が表示されa.cpp、 にエラーが表示されたとしますb.cpp。エラーを修正しb.cppて再コンパイルします。Visual Studio は再コンパイルするa.cpp必要がないため、以前に見つかった警告を思い出しません。

どうにかして警告を持続させたいと思います。ただし、警告をエラーとして扱いたくありません(警告があってもコンパイル/実行したい)。これは可能ですか?

4

6 に答える 6

3

プロジェクト設定に移動し、C/C++ タブ (カテゴリ: 一般) ですべての警告をエラーとして設定できます。

于 2008-12-21T20:32:53.500 に答える
1

本質的に、あなたは運が悪いです。C++ コンパイルでは、すべてのエラーと警告が破棄されます。.OBJ ファイルが欠落している .CPP ファイル (つまり、エラーがあり前回失敗したファイル) のみを再コンパイルするため、エラーのみが表示されます。

いくつかのオプションがあります。私の頭の上から:

  • ビルド完了イベントに応答するマクロを作成します。警告が表示された場合は、.OBJ ファイルが削除される可能性があります。.CPP ファイルは、次回再びコンパイルされます。残念ながら、これは、再コンパイルしないとプログラムが実行されない可能性があることを意味します。
  • 別の方法で動作するマクロを作成することもできます。つまり、ビルドの開始時に、警告があるかどうかを確認してから、.OBJ ファイルを削除します。
  • .CPP ファイルが再度コンパイルされるまで警告を記憶する VS アドインを作成します。
于 2008-12-21T20:56:24.247 に答える
1

Hernan が既に述べたように、ビルド結果 (警告) を含む中間ファイルのコピーを作成するカスタム ビルド ステップを追加します。これに名前を付ける方法はわかりませんが、カスタム ビルド ステップとして呼び出されるバッチ ファイルを作成できます。

警告を保存したい理由は私にはわかりません。それらをエラーとして扱うか、無視するか、プラグマ/無効にします。

于 2008-12-21T21:07:55.393 に答える
0

可能な限りエラーとして警告を出して実行することを強くお勧めします。もちろん、自分で書いているすべてのコードでもそうです。ここで警告を修正する方が、後になってからすべての警告を 1 つのパスで実行するよりもはるかに簡単です。

警告をエラーとして実行する理由はいくつかあります。

  • 警告の大部分は、実際にはコードに問題があることを示しています。
  • 警告がたくさんある場合、途中で新しい警告が表示されても気付かないでしょう。私はこれが起こるのをたくさん見てきました。
  • 間違っていると思われる警告が表示された場合、または何らかの理由ですぐに修正できない場合は、警告をオフにすることができます。/w オプションまたは適切な #pragma を使用します。特定のファイルのみ、またはコード内の特定の場所でのみ切り替えることができることに注意してください。コンパイル時にまだ通知が必要であるが、#pragma メッセージが必要な場合。
  • 制御できないコードがあり、それをプログラムにコンパイルする必要がある場合は、その特定のモジュールまたはソース ファイルの警告を切り替えるか、/WX なしで実行することさえできます。とにかくコードを変更していない可能性があるため、ポイント 2 はおそらくあまり関係ありません。

/WX (または -Werror) を指定して実行しない正当な理由がまったくわかりません。

于 2008-12-21T21:43:49.330 に答える
0

プロジェクトを再構築するか、a.cpp ファイルのみを再コンパイルします。警告はコンパイラによって出力されるため、現在のコンパイルに含まれていないファイルの警告は表示されません。

出力ペインに移動して Ctrl+S を押すと、現在のビルド出力を保存できます (覚えていない場合は、デフォルトで output-build.txt になります)。

あなたのプロジェクト設定では、ビルド出力メッセージをファイルに保存できると思います。それをチェックして、あなたの結果を教えてください。

乾杯

于 2008-12-21T20:14:25.300 に答える
0

警告の原因となるファイルを再コンパイルしたくない場合、1 つのオプションとして、コンパイラの出力を警告用にフィルター処理し、//TODO コメントとして .cpp ファイルに書き込む小さなユーティリティを作成することが考えられます。 .

その後、IDE はそれらを todo リストに配置します。

箱から出してすぐにこれを行うものは何も知りませんが、おそらくそれほど難しくはありません。

ユーティリティが実際のソース ファイルをいじりたくない場合 (そして、そうするかどうかはわかりません)、//TODO コメントをダミーの 'todo.cpp' ファイルに書き込んで、プロジェクト内のファイル。その後、それらは todo リストに表示され、ファイルはコメントにすぎないため、ビルドには影響しません。リストに重複を追加しないことについて、ユーティリティがスマートであることを確認してください。todo.cpp 行から対応する警告の実際の場所に移動するマクロを作成できます。

于 2008-12-21T21:11:12.877 に答える