在调试控制台程序的时候,我们经常使用printf
来调试,虽然断点也是一个有力的工具,但是有的时候使用printf
会显得更为直观。但是如果是图形程序的话,printf
就没法使用了。这个时候很多人会选择在绘图函数里面把需要监视的变量画出来,这样非常费时费力。
其实Visual Studio给我们提供了一个“控制台”,就是那个会在生成程序时给你报错的那个输出窗口,你是可以在上面输出文字的;具体来讲,这个函数就是干这个用的:
void OutputDebugString(LPCWSTR lpOutputString)
当然,你注意到了,这个函数只能输出一个wstring,很不方便,所以我从网上找到了这么一个函数,你可以使用这个函数用printf
的语法来随心所欲地打印你想要观察的信息了。
void OutputDebugPrintf(const char* strOutputString,...)
{
char strBuffer[4096]={0};
va_list vlArgs;
va_start(vlArgs,strOutputString);
_vsnprintf_s(strBuffer,sizeof(strBuffer)-1,strOutputString,vlArgs);
//vsprintf(strBuffer,strOutputString,vlArgs);
va_end(vlArgs);
OutputDebugString(CA2W(strBuffer));
}
最后的CA2W()宏值得一说,这个宏能够轻易地把一个char*转成宽字符版本,非常好用。