ASSERT(exp) //可中斷程序,不能顯示自定義消息
_ASSERT(exp) //可中斷程序,不能顯示自定義消息
_ASSERTE(exp) //可中斷程序,不能顯示自定義消息,可顯示錶達式exp
可輸出文件的斷言宏:
#if defined(_DEBUG) #define _ASSERTE_MSG0(expr,format) / do { if (!(expr) && / (1 == _CrtDbgReport(_CRT_ASSERT, __FILE__, __LINE__, NULL, #expr##"/n"##format))) / _CrtDbgBreak(); } while (0) #define _ASSERTE_MSG1(expr,format,arg1) / do { if (!(expr) && / (1 == _CrtDbgReport(_CRT_ASSERT, __FILE__, __LINE__, NULL, #expr##"/n"##format,arg1))) / _CrtDbgBreak(); } while (0) #define _ASSERTE_MSG2(expr,format,arg1,arg2) / do { if (!(expr) && / (1 == _CrtDbgReport(_CRT_ASSERT, __FILE__, __LINE__, NULL, #expr##"/n"##format,arg1,arg2))) / _CrtDbgBreak(); } while (0) #define _ASSERTE_MSG3(expr,format,arg1,arg2,arg3) / do { if (!(expr) && / (1 == _CrtDbgReport(_CRT_ASSERT, __FILE__, __LINE__, NULL, #expr##"/n"##format,arg1,arg2,arg3))) / _CrtDbgBreak(); } while (0) #define _ASSERTE_MSG4(expr,format,arg1,arg2,arg3,arg4) / do { if (!(expr) && / (1 == _CrtDbgReport(_CRT_ASSERT, __FILE__, __LINE__, NULL, #expr##"/n"##format,arg1,arg2,arg3,arg4))) / _CrtDbgBreak(); } while (0) #else #define _ASSERTE_MSG0(expr,format) #define _ASSERTE_MSG1(expr,format,arg1) #define _ASSERTE_MSG2(expr,format,arg1,arg2) #define _ASSERTE_MSG3(expr,format,arg1,arg2,arg3) #define _ASSERTE_MSG4(expr,format,arg1,arg2,arg3,arg4) #endif