作者:朱金灿

来源: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

最新文章

  1. REST服务介绍
  2. gRaphael——JavaScript 矢量图表库:两行代码实现精美图表
  3. JavaScript中,本周、上周、本月、上月日期判断
  4. SQL Server中的事务日志管理(9/9):监控事务日志
  5. IIS 部署WCF 4.0
  6. Android之ListView——ArrayAdapter的学习与总结
  7. table表格实现点击修改 PHP同步数据库 排序
  8. Begin Andriod -- 安装android开发环境
  9. Linux shell用法和技巧(转)
  10. DiskFileUpload类
  11. fedora 挂载 小米手机 (估计其它android设备也是类似操作)
  12. TypeScript入门知识五(面向对象特性一)
  13. 本地windows下搭建git的本地服务器
  14. MySQL常用SQL语句/函数/存储过程
  15. 16. Spring boot 错误页面
  16. android使用ARouter跳转activity(阿里巴巴开源的)
  17. Delphi来实现一个IP地址输入控件
  18. 协程(Coroutine)并不是真正的多线程
  19. RobotFramework+Selenium2+Appium环境搭建
  20. 51nod1079

热门文章

  1. js之insertBefore(newElement,oldElement)
  2. 使用tinyxml2库解析xml
  3. Android框架-Volley(二)
  4. 使用google API之前需要對input 做什麼 安全性的處理?
  5. IHttpHandler的学习(0)
  6. c# 的类成员
  7. linux傻瓜式安装lnmp
  8. bzoj1270 BeijingWc2008 雷涛的小猫 DP
  9. [Recompose] Refactor React Render Props to Streaming Props with RxJS and Recompose
  10. vector和list容器之间的复制