我們都知道MFC有個(gè)很有用的宏,叫TRACE,它用起來(lái)跟printf一樣簡(jiǎn)單,能直接在VC++的output窗口中輸出調(diào)試信息,但非MFC的project卻沒(méi)有這個(gè)宏,只能用OutputDebugString這個(gè)API輸出,而OutputDebugString這個(gè)API卻不支持類似printf這樣的輸出格式,而且不能在Release版本中自動(dòng)關(guān)閉,于是我自己寫(xiě)了一個(gè),其實(shí)實(shí)現(xiàn)起來(lái)還是蠻簡(jiǎn)單的,上代碼:
#ifdef _DEBUG
#define MYTRACE DbgStrOut
#else
#define MYTRACE
#endif
// My debug output function
void DbgStrOut(const TCHAR *fmt,
);
把這個(gè)定義寫(xiě)在預(yù)編譯頭中(默認(rèn)是stdafx.h),就能很方便在別處調(diào)用了。這個(gè)MYTRACE的作用就相當(dāng)于TRACE。下面是寫(xiě)在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的項(xiàng)目,也是可以通過(guò)的,而且支持TCHAR字符串,也就是說(shuō)可以用Unicode。:)