次の方法で共有


MFC アサーション

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

エディション

Visual Basic

C#

F#

C++

Web Developer

Express

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

ネイティブのみ

トピック該当なし

Pro、Premium、Ultimate

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

ネイティブのみ

トピック該当なし

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 マクロを使用してください。

参照

概念

アサーション