我们都知道MFC有个很有用的宏,叫TRACE,它用起来跟printf一样简单,能直接在VC++的output窗口中输出调试信息,但非MFC的project却没有这个宏,只能用OutputDebugString这个API输出,而OutputDebugString这个API却不支持类似printf这样的输出格式,而且不能在Release版本中自动关闭,于是我自己写了一个,其实实现起来还是蛮简单的,上代码:
#ifdef _DEBUG
#define MYTRACE DbgStrOut
#else
#define MYTRACE
#endif
// My debug output function
void DbgStrOut(const TCHAR *fmt, );
把这个定义写在预编译头中(默认是stdafx.h),就能很方便在别处调用了。这个MYTRACE的作用就相当于TRACE。下面是写在cpp文件中的代码。
void DbgStrOut(const TCHAR *fmt, )
{
TCHAR szOutStr[512];
va_list ap;
va_start(ap, fmt);
vswprintf(szOutStr, fmt, ap);
va_end(ap);
OutputDebugString(szOutStr);
}
这样就可以了,我尝试了Windows Mobile的项目,也是可以通过的,而且支持TCHAR字符串,也就是说可以用Unicode。:)