2024年4月19日发(作者:)
DebugOutputString
使用
-
雨狼的避难所
-
CSDNBlog
DebugOutputString
功能
:
发送一个字串到调试器的显示。
函数原型
:void WINAPI OutputDebugString( LPCTSTR
lpOutputString );
头文件
:
一. 最简单的用法
#define MAX_DBG_MSG_LEN (1024)
char[MAX_DBG_MSG_LEN];
sprintf(msgbuf, "LastError=%ldn", 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=%ldn", 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, ) __dbg_printf(format, ##
arg)
Windows #define dbg(format, ...) __dbg_printf(format,
__V A_ARGS__)
当然有最直接的定义方式
#define dbg __dbg_printf
还有一个应该算比较独特的
用法吧
#define PerFormat "[ThreadID @ %08d] "
#define dbgex(format, ...) __dbg_printf(PerFormat
format,
GetCurrentProcessId(), __V A_ARGS__)
发布评论