_CrtSetReportMode
更新 : 2007 年 11 月
_CrtDbgReport、および _ASSERT マクロ、_ASSERTE マクロ、_ASSERT マクロ、_ASSERTE マクロ、_RPT、_RPTF、_RPTW、_RPTFW のマクロ、_RPT、_RPTF、_RPTW、_RPTFW のマクロ などの _CrtDbgReport、_CrtDbgReportW を呼び出すすべてのマクロが生成する特定のレポートの種類の出力先を指定します (デバッグ バージョンのみ)。
int _CrtSetReportMode(
int reportType,
int reportMode
);
パラメータ
reportType
レポートの種類。_CRT_WARN、_CRT_ERROR、および _CRT_ASSERT。reportMode
reportType の新しいレポート モード。
戻り値
正常に実行された場合、_CrtSetReportMode は reportType で指定されたレポートの種類で前回定義されていたレポート モードを返します。reportType として無効な値が渡された場合、または reportMode に無効なモードが指定された場合、「パラメータの検証」に説明されているように、_CrtSetReportMode は無効なパラメータ ハンドラを呼び出します。実行の継続が許可された場合、この関数は、errno を EINVAL に設定し、-1 を返します。詳細については、「errno、_doserrno、_sys_errlist、および _sys_nerr」を参照してください。
解説
_CrtSetReportMode は、_CrtDbgReport の出力先を指定します。_ASSERT、_ASSERTE、_RPT、および _RPTF の各マクロは _CrtDbgReport を呼び出すため、_CrtSetReportMode はこれらのマクロで指定されたテキストの出力先を指定します。
_DEBUG が未定義の場合、_CrtSetReportMode の呼び出しはプリプロセスで削除されます。
_CrtSetReportMode を呼び出してメッセージの出力先を定義しない場合、次に示す既定の設定が有効となります。
アサーションの失敗およびエラーは、デバッグ メッセージ ウィンドウに送られます。
Windows アプリケーションの警告は、デバッガの出力ウィンドウに送られます。
コンソール アプリケーションの警告は、表示されません。
Crtdbg.h で定義されているレポートの種類を次の表で説明します。
レポートの種類 |
説明 |
---|---|
_CRT_WARN |
警告、メッセージ、およびすぐに対応する必要がない情報 |
_CRT_ERROR |
エラー、回復できない問題、およびすぐに対応が必要な問題 |
_CRT_ASSERT |
アサートの失敗 (アサートされた式が FALSE を返した場合)。 |
_CrtSetReportMode 関数は、reportMode で指定されたレポート モードを reportType で指定されたレポートの種類に新しく割り当て、reportType に対して前回定義されていたレポート モードを返します。reportMode の選択肢と _CrtDbgReport の動作結果を次に示します。これらのオプションは、Crtdbg.h でビット フラグとして定義されています。
レポート モード |
_CrtDbgReport の動作 |
---|---|
_CRTDBG_MODE_DEBUG |
メッセージをデバッガの出力ウィンドウに書き込みます。 |
_CRTDBG_MODE_FILE |
メッセージをユーザー指定のファイル ハンドルに書き込みます。_CrtSetReportFile を呼び出して、出力先となるファイルまたはストリームを定義します。 |
_CRTDBG_MODE_WNDW |
メッセージ ボックスを作成し、メッセージと Abort、Retry、および Ignore の各ボタンを表示します。 |
_CRTDBG_REPORT_MODE |
指定された reportType の reportMode を返します。 1 _CRTDBG_MODE_FILE 2 _CRTDBG_MODE_DEBUG 4 _CRTDBG_MODE_WNDW |
レポートする各レポートの種類には、0 ~ 3 種類のモードを使用できます。したがって、1 つのレポートの種類に対して複数の出力先を定義できます。たとえば、次のコード例では、アサーションの失敗をデバッグ メッセージ ウィンドウと stderr の両方に送ります。
_CrtSetReportMode( _CRT_ASSERT, _CRTDBG_MODE_FILE | _CRTDBG_MODE_WNDW );
_CrtSetReportFile( _CRT_ASSERT, _CRTDBG_FILE_STDERR );
また、レポート モードは、レポートの種類ごとに制御できます。たとえば、前述のように、reportType が _CRT_WARN の場合は出力デバッグ文字列に送り、_CRT_ASSERT の場合はデバッグ メッセージ ウィンドウに表示して stderr に送ることができます。
必要条件
ルーチン |
必須ヘッダー |
オプション ヘッダー |
---|---|---|
_CrtSetReportMode |
<crtdbg.h> |
<errno.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
ライブラリ:C ランタイム ライブラリ のデバッグ バージョンのみ。
使用例
「report サンプル : C ランタイムのデバッグ レポート関数」を参照してください。
.NET Framework の相当するアイテム
適用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。