zoukankan      html  css  js  c++  java
  • 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"
    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);
    

    效果图如下:

     

    参考文献:

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

  • 相关阅读:
    编程学习杂烩
    设计模式
    redis
    H5
    Java
    db工具
    python + pip
    mysql
    Spring Security
    Spring Cloud Gateway
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6470178.html
Copyright © 2011-2022 走看看