作者:朱金灿
来源: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" Message:"+(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(" Message:")+std::string(msgw_)).c_str()) #endif #else #define XASSERT(exp_, msgw_) #endif
测试代码:
TCHAR* psz = _T("错误的表达式"); XASSERT(false,psz);
效果图如下:
参考文献: