可輸出文本的ASSERT

windows原斷言宏:
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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章