作者:朱金灿
来源: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);
效果图如下:
参考文献: