zoukankan      html  css  js  c++  java
  • 打印断言函数

    在写directUi时,用到一些函数断言,记录下:

    	assert(a != 0);      //assert.h,此函数会将错误信息显示在命令行中,在命令行中显示出错的语句和行数
    	_ASSERTE(a != 0);   //crtdbg.h,此宏会显示出在此宏中的语句
    	_ASSERT(a != 0);    //crtdbg.h,此宏不会显示在此宏中的语句,而只是显示出错的行数


    这样写:

    #ifdef _DEBUG
    #define TRACE __Trace
    #define TRACEMSG __TraceMsg
    #else
    #define TRACE
    #define TRACEMSG _T("")
    #endif
    
    #define lengthof(x) (sizeof(x)/sizeof(*x))
    
    void __Trace(LPCTSTR pstrFormat, ...)
    {
    #ifdef _DEBUG
    	TCHAR szBuffer[300] = { 0 };
    	va_list args;
    	va_start(args, pstrFormat);
    	::wvnsprintf(szBuffer, lengthof(szBuffer) - 2, pstrFormat, args);
    	_tcscat(szBuffer, _T("\n"));
    	va_end(args);
    	::OutputDebugString(szBuffer);
    #endif
    }
    
    LPCTSTR __TraceMsg(UINT uMsg)
    {
    #ifdef UNICODE
    	#define MSGDEF(x) if(uMsg==x) return L#x
    #else
    	#define MSGDEF(x) if(uMsg==x) return #x
    #endif
    	MSGDEF(WM_SETCURSOR);
    	MSGDEF(WM_NCHITTEST);
    	MSGDEF(WM_NCPAINT);
    	MSGDEF(WM_PAINT);
    	MSGDEF(WM_ERASEBKGND);
    	MSGDEF(WM_NCMOUSEMOVE);  
    	MSGDEF(WM_MOUSEMOVE);
    	MSGDEF(WM_MOUSELEAVE);
    	MSGDEF(WM_MOUSEHOVER);   
    	MSGDEF(WM_NOTIFY);
    	MSGDEF(WM_COMMAND);
    	MSGDEF(WM_MEASUREITEM);
    	MSGDEF(WM_DRAWITEM);   
    	MSGDEF(WM_LBUTTONDOWN);
    	MSGDEF(WM_LBUTTONUP);
    	MSGDEF(WM_LBUTTONDBLCLK);
    	MSGDEF(WM_RBUTTONDOWN);
    	MSGDEF(WM_RBUTTONUP);
    	MSGDEF(WM_RBUTTONDBLCLK);
    	MSGDEF(WM_SETFOCUS);
    	MSGDEF(WM_KILLFOCUS);  
    	MSGDEF(WM_MOVE);
    	MSGDEF(WM_SIZE);
    	MSGDEF(WM_SIZING);
    	MSGDEF(WM_MOVING);
    	MSGDEF(WM_GETMINMAXINFO);
    	MSGDEF(WM_CAPTURECHANGED);
    	MSGDEF(WM_WINDOWPOSCHANGED);
    	MSGDEF(WM_WINDOWPOSCHANGING);   
    	MSGDEF(WM_NCCALCSIZE);
    	MSGDEF(WM_NCCREATE);
    	MSGDEF(WM_NCDESTROY);
    	MSGDEF(WM_TIMER);
    	MSGDEF(WM_KEYDOWN);
    	MSGDEF(WM_KEYUP);
    	MSGDEF(WM_CHAR);
    	MSGDEF(WM_SYSKEYDOWN);
    	MSGDEF(WM_SYSKEYUP);
    	MSGDEF(WM_SYSCOMMAND);
    	MSGDEF(WM_SYSCHAR);
    	MSGDEF(WM_VSCROLL);
    	MSGDEF(WM_HSCROLL);
    	MSGDEF(WM_CHAR);
    	MSGDEF(WM_SHOWWINDOW);
    	MSGDEF(WM_PARENTNOTIFY);
    	MSGDEF(WM_CREATE);
    	MSGDEF(WM_NCACTIVATE);
    	MSGDEF(WM_ACTIVATE);
    	MSGDEF(WM_ACTIVATEAPP);   
    	MSGDEF(WM_CLOSE);
    	MSGDEF(WM_DESTROY);
    	MSGDEF(WM_GETICON);   
    	MSGDEF(WM_GETTEXT);
    	MSGDEF(WM_GETTEXTLENGTH); 
    	static TCHAR szMsg[10];
    	::wsprintf(szMsg, _T("0x%04X"), uMsg);
    	return szMsg;
    }
    #
    表示为后面的内容加上引号
    #define tostring(x) L#x
    tostring(abc) == L"abc" 
    


  • 相关阅读:
    HTML DOM prompt() 方法
    Zen cart前台英文后台中文(Zen cart后台取消多语言输入的方法)
    Zencart模板结构和设计详解
    给zencart添加一个fckeditor编辑器
    mssql重置表
    Guid与id区别
    zencart五款是必备的插件
    C#使用HTTP头检测网络资源是否有效
    OA系统权限管理设计方案
    C#获取网页http头的方法(附代码)
  • 原文地址:https://www.cnblogs.com/hgy413/p/3693726.html
Copyright © 2011-2022 走看看