assert增强宏的实现

作者:朱金灿

来源:http://blog.csdn.net/clever101

   

           标准c的assert宏和MFC的ASSERT宏都不支持输出太多的信息。今天实现了一个assert增强宏,可以输出更多的出错信息。具体代码如下:



#ifdef _DEBUG

   #ifdef UNICODE  

    #define XASSERT(exp_, msgw_) _ASSERT_EXPR((exp_), (std::wstring(L#exp_)+L"\r\nMessage:"+(msgw_)).c_str())

   #else  

    #define _ASSERT_EXPR_ANSI(expr, msg) \
	(void) ((!!(expr)) || \
	(1 != _CrtDbgReport(_CRT_ASSERT,(__FILE__), __LINE__, NULL, msg)) || \
	(_CrtDbgBreak(), 0))

    #define XASSERT(exp_, msgw_) _ASSERT_EXPR_ANSI((exp_),(std::string(#exp_)+std::string("\r\n Message:")+std::string(msgw_)).c_str())

   #endif 

#else 

    #define XASSERT(exp_, msgw_)  

#endif

测试代码:

	TCHAR* psz = _T("错误的表达式");
	XASSERT(false,psz);

效果图如下:

 

参考文献:

1. (C++)定制一个可输出更多信息的assert

posted on 2014-12-24 18:39  岚之山  阅读(201)  评论(0)    收藏  举报

导航