ASSERTは、デバッグ環境での式の評価に使います。リリース環境では何もしません。
VERIFYは、デバッグ環境でもリリース環境でも式の評価をすることができます。
どちらも、デバッグ環境では引数に指定した式が0(偽)を返した場合にプログラムを異常終了させます。
VERIFYはリリース環境でも式の評価を行いますが、その結果が0であっても、
プログラムを異常終了させることはしません。
例えば、以下のように記述します。
CMenu menu;
VERIFY(menu.LoadMenu(IDR_MENU1));
CMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup != NULL);
VERIFYではIDR_MENU1というIDをもつメニューを読みこんでいます。ここで読み込みに失敗した場合、
デバッグ環境ではプログラムを異常終了させます。VERIFYを使っているのは、
当然リリース環境でもこの式を実行する必要があるからです(この式がなければメニューが読み込めません!)。
メニューの読み込みに成功した後、今度はそこからポップアップメニューを取得しています。
そしてその後、その値がNULLでないかどうか評価しています。
ここでASSERTを使用しているのは、リリース環境ではこの評価式が不要だからです。
目次へ