断言assert
ASSERT(expr);
assert(expr);
// 当expr==0时,系统会调用abort来终止程序运行。
// 当expr==true,正常运行
注:ASSERT是MFC中的,<afx.h> assert是标准C++中的,<assert.h>
两者都是在Debug下有效,在Release下,相当于没有,
#ifdef NDEBUG //NDEBUG是release,_DEBUG是debug #define assert(e) ((void)0) // 如果有定义NDEBUG宏,则assert断言不生效
VERIFY
VERIFY(wnd.create(...));
当debug、release下都运行 wnd.create(...) ,并在debug下断言是否成功。
#ifdef _DEBUG #define VERIFY(f) ASSERT(f) #else #define VERIFY(f) ((void)(f)) #endif