2011-01-05 21 views
25

でデバッグ/リリース設定に応じて、私はこのように私のプログラムでデバッグ出力を持っています。私はいつもリリース版を作るときにその行をコメントアウトします。 Visual Studio 2010には、のデバッグリリースのコンパイルに使用されるコマンドラインなどを処理するバージョンの「構成」もあります。また、コンフィギュレーション "Debug"を使用して、コンパイラにDEBUGを自動的に定義できますか?どうやって?自動の#defineは、Visual Studio 2010

答えて

58

Visual Studioでは、デバッグビルド用に_DEBUGシンボル(および非デバッグビルド用のNDEBUG)が自動的に定義されます。

これを行う別の方法は、プロジェクト設定 - >構成プロパティ - > C/C++ - >プリプロセッサに移動し、プリプロセッサ定義を手動で編集することです。

も参照してください。
This answerは、より詳細な_DEBUGとNDEBUGの違いを説明しています。
This answerは、NDEBUGシンボルの目的と、それが標準で定義されているかどうかを説明しています。

+6

ちなみに、NDEBUGはポータブルなソリューションです。 DEBUGビルドに標準シンボルが存在しないことは残念です。 –

+0

こんにちは、どのようにvsがそれらのマクロを定義することができますか? msdn上では、NDEBUGではなく、_DEBUGとだけ言及しています。ここで、VSがあなたにしてくれたすべてのマクロのリストを見ることができますか? – Icebone1000

+0

@ Icebone1000:私はNDEBUGが標準シンボルであるかどうかを説明する答えへのリンクを追加しました。なぜそれがポータブルであると考えられるのでしょうか? VSの[定義済みマクロ一覧](http://msdn.microsoft.com/en-us/library/b0084kay(v = vs.110).aspx)を参照してください。 –

8

_DEBUGを使用してください。 Visual C++はこれをデバッグ構成に定義します。プロジェクトのプロパティダイアログで、デバッグ設定のプリプロセッサディレクティブを確認してください。

0

はい、プロジェクトオプションページの[コンパイル - >高度なコンパイルオプション]をオンにする必要があります。 しかし、VSはデフォルトで自動的にデバッグモードのDEBUGディレクティブを定義します。

+1

私はそれが '_DEBUG'ディレクティブだと信じています。アンダースコアに注意してください。 –

3

私はあまりにもプリプロセッサプロパティを見て、_DEBUGを削除しなければならないと思っていました。 Visual Studioは、デバッグ実行時ライブラリオプションの1つを選択すると、_DEBUGを設定することによって手助けをします。

プロジェクトのプロパティページ構成プロパティ\ C/C++ \コード生成ランタイムライブラリのために選択したオプションには、いくつかの定義に影響を与えます。デバッグライブラリ(/MTdにまたは/MDD_DEBUGを選択するときセットで定義します。

MSDN /MD, /MT ... を参照してください。これらのオプションに基づいて設定されるいくつかの#defineがあります。これらのファイルは、ヘッダファイルをインクルードする前に#defineを設定する人を探すときには見えません!

関連する問題