次の方法で共有


MFC アサーション

更新 : 2007 年 11 月

このトピックの内容は、次の製品に該当します。

Edition

Visual Basic

C#

C++

Web Developer

Express

トピック該当なし トピック該当なし

ネイティブのみ

トピック該当なし

Standard

トピック該当なし トピック該当なし

ネイティブのみ

トピック該当なし

Pro/Team

トピック該当なし トピック該当なし

ネイティブのみ

トピック該当なし

表の凡例 :

トピック該当

対象

トピック該当なし

該当なし

トピックは該当しますが、コマンドは既定では非表示です

既定で非表示のコマンド

MFC には、アサーションによるチェックを行うための ASSERT マクロが定義されています。また、CObject 派生オブジェクトの内部状態を検証するための MFC ASSERT_VALID および CObject::AssertValid も定義されています。

MFC の ASSERT マクロは、引数 (式) が 0 または false と評価された場合にプログラムの実行を停止し、ユーザーに警告します。式が 0 以外と評価された場合は、引き続きプログラムが実行されます。

アサーションが失敗すると、アサーション対象のソース ファイル名と行番号がメッセージ ダイアログ ボックスに表示されます。このダイアログ ボックスで [再試行] を選択すると、AfxDebugBreak が呼び出され、プログラムの実行が停止してデバッガが起動します。この時点で、呼び出し履歴やその他のデバッガ機能を調べて、アサーションが失敗した原因を確認できます。Just-In-Time デバッグを有効にしておくと、アサーションが失敗した時点でデバッガが起動していない場合に、このダイアログ ボックスからデバッガを起動できます。

ASSERT を使用して関数の戻り値をチェックする方法を次に示します。

int x = SomeFunc(y);
ASSERT(x >= 0);   //  Assertion fails if x is negative

ASSERT を次のように IsKindOf 関数と組み合わせて使用すると、関数の引数の型をチェックできます。

ASSERT( pObject1->IsKindOf( RUNTIME_CLASS( CPerson ) ) );

ASSERT マクロは、プログラムのデバッグ バージョンでだけプログラム エラーを検出します。このマクロは、リリース バージョンではコードを生成しません。リリース バージョンで式を評価する必要がある場合は、ASSERT の代わりに VERIFY マクロを使用してください。

参照

概念

アサーション