_DEBUG定数による指定


 Dump関数は、実際には次のようにプリプロセッサ記述が付加されています。
ここで_DEBUG定数は、プログラムをリリース用コンパイルでなく、デバッグ用
にコンパイルし、デバッグ実行したときに定義されます。

#ifdef _DEBUG
void クラス::Dump(CDumpContext& dc) const
{
    CFormView::Dump(dc);
}
        ・
    ・
    ・
#endif

 この拡張機能があるために、Visual C++ではデバッグ中にランタイム関数に
直接ステップインできるようになります。デバッグ用のモードでコンパイル
すると_DEBUGが定義されランタイムライブラリのデバッグバージョンが指定
されます。
(モード指定は、[ビルド(B)]-[バッチビルド(U)]で指定できます。)
 デバッグ環境下で実行した時のみ、_DEBUG定数で有効となったデバッグ用
記述が実行されます。すなわち、[ビルド(B)]-[デバッグの開始(D)]-[実行(G)]
で実行すると有効になります。
 また、TRACEマクロ、afxDumpへのストリーム出力もデバッグ環境下でのみ
動作します。
 従って、これらデバッグ機能の記述は、リリース環境下では無視されます。


例:
 #ifdef _DEBUG
    TRACE("Data1 = %d",Data1);
 #endif
 
 こうすることで、デバッグ用記述部分の検索が容易となり処理が確実と
なります。また、他のプロジェクトへコードを再利用する時もそのプロジェクト
の設定に依存しなくなるので都合が良いです。