打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
DebugOutputString 使用 - 雨狼的避难所 - CSDNBlog
DebugOutputString
功能:发送一个字串到调试器的显示。
函数原型:void WINAPI OutputDebugString( LPCTSTR lpOutputString );
头文件:
一.最简单的用法
#define MAX_DBG_MSG_LEN (1024)
char[MAX_DBG_MSG_LEN];
sprintf(msgbuf, "LastError=%ld\n", GetLastError());
OutputDebugString(msgbuf);
二.扩展的用法
按照printf的风格的对OutputDebugString进行封装
#define MAX_DBG_MSG_LEN (1024)
static void __dbg_printf (const char * format,...)
{
char buf[MAX_DBG_MSG_LEN];
va_list ap;
va_start(ap, format);
_vsnprintf(buf, sizeof(buf), format, ap);
va_end(ap);
OutputDebugString(buf);
}
使用:
__dbg_printf( "LastError=%ld\n", GetLastError());
三.进一步的扩展
对DEBUG和RELEASE下的区分.
ifdef _DEBUG
static void __dbg_printf (const char * format,...)
{
char buf[MAX_DBG_MSG_LEN];
va_list ap;
va_start(ap, format);
_vsnprintf(buf, sizeof(buf), format, ap);
va_end(ap);
OutputDebugString(buf);
}
#else
static void __dbg_printf (const char * format,...) {}
#endif
顺便说一下宏中对不定参数的使用
Linux下
#define dbg(format, arg...) __dbg_printf(format, ## arg)
Windows
#define dbg(format, ...) __dbg_printf(format, __VA_ARGS__)
当然有最直接的定义方式
#define dbg __dbg_printf
还有一个应该算比较独特的用法吧
#define PerFormat "[ThreadID @ %08d] "
#define dbgex(format, ...) __dbg_printf(PerFormat format,
GetCurrentProcessId(), __VA_ARGS__)
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
总结几种log打印printf函数的宏定义
C的可变参数
C语言日志分级如何设计?
一个简单实用的log tool
注释整个程序里的printf
C预编译命令,C++预编译命令,C宏定义,C++宏定义
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服