首页
社区
课程
招聘
[求助 VC ] 怎么样把 OutputDebugString 写的像这样....
发表于: 2008-6-29 14:45 8789

[求助 VC ] 怎么样把 OutputDebugString 写的像这样....

2008-6-29 14:45
8789


我想把 OutputDebugString 的输出弄得有点像 CString 的 Format 函数一样

比如我要输出一个int  a=123;

my_outdebug("%d",a);

我想写这么一个函数 .可以格式化输出调试信息
void my_outdebug(LPCTSTR str,...) //像sprintf一样
{

OutputDebugString (str....);
}

以前见过这样的函数.后面的第二个参数好像 是写着 ...(二三个点)

我不知道这样处理叫什么方法...叫格式化?

希望能帮我下..


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 70
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
int PutDbgStr(LPCTSTR lpFmt, ...)
{
        TCHAR        Msg[1024];
        int        len=wvsprintf(Msg,lpFmt,va_list(1+&lpFmt));
        OutputDebugString(Msg);
        return len;
}
2008-6-29 15:21
0
雪    币: 33
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这个就是叫 "可变参数列表"吧?

谢谢 skykrnl...

刚才试了一下.果然好用呀!!

为什么: va_list(1+&lpFmt)); 这里必须加 1 呢?

另外..问一下...可不可以让他在DEUBG 模式下输出...release 不输出呢?
2008-6-29 15:30
0
雪    币: 244
活跃值: (69)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
字符串到'\0'结尾,加1,才是你可变参数的变量地址。

int PutDbgStr(LPCTSTR lpFmt, ...)
{
  #ifdef DEBUG
  TCHAR  Msg[1024];
  int  len=wvsprintf(Msg,lpFmt,va_list(1+&lpFmt));
  OutputDebugString(Msg);
  return len;
  #else
  return 0
  #endif
}
实现Release版不输出
2008-6-29 16:57
0
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
5
#include "stdafx.h"
#include "debug.h"
#include "windows.h"
#define DEBUG_PROC
#ifndef MODE_NODEBUGOUTPUT
void DbgPrint(char * formatstr,...)
{
        va_list argptr;
        va_start(argptr, formatstr);
        char buf[1024];
        wvsprintfA(buf,formatstr,argptr);
        //strcat(buf,"\n");
        ::OutputDebugStringA(buf);
}
#endif
2008-6-29 17:12
0
游客
登录 | 注册 方可回帖
返回
//