您的位置:首页 > 其它

Visual Studio 2010 中win32程序输出调试信息

2013-04-12 22:40 453 查看
在以往控制台程序里,可以在程序中插入printf来显示程序运行状态信息,但是,在VS2010开发win32程序时printf不知道被输出到哪里去了,很不方便。

今天对这个问题进行了一些搜索,结合以下内容,形成一套解决方案。

_myprintf函数可以实现像调用printf一样,输出调试信息,输出的信息在VS的”输出“窗口中显示,支持%d %f %s三种格式,最长输出信息不能超过1024, 应该可以满足调试需求了。

bool _myprintf(char *fmt, ...)
{
char buf[1024]={0};
va_list ap;
int ival;
double dval;
char *sval;

va_start(ap,fmt);
for(char *p = fmt, *pbuf=buf; *p; p++)
{
if(*p!='%')  //如果不是占位符,就按照字面值输出
{
*pbuf++ = *p;
continue;
}
switch(*++p)
{
case 'd':
ival=va_arg(ap,int);
sprintf(pbuf, "%d",ival);
pbuf += strlen(pbuf);
break;

case 'f':
dval = va_arg(ap, double);
sprintf(pbuf, "%f", dval);
pbuf += strlen(pbuf);
break;
case 's':
for(sval = va_arg(ap, char*); *sval; sval++)
{
*pbuf++ = *sval;
}
break;
default:
*pbuf++ = *p;
break;
}
}

WCHAR wsz[1024];
swprintf(wsz, L"%S", buf);
OutputDebugString(wsz);

return true;
}


参考:
http://blog.csdn.net/ghostcomputing/article/details/6838276 http://bbs.csdn.net/topics/30365452
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐