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