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