#include <comdef.h><br />#ifdef _DEBUG<br /> void _TRACE( LPCTSTR szInfo, _variant_t Val)<br /> {<br /> try<br /> {<br /> WCHAR szBuff[1024];<br /> memset(szBuff, 0, sizeof(szBuff));</p><p> if(szInfo)<br /> {<br /> _variant_t vs( szInfo );<br /> vs.ChangeType( VT_BSTR );<br /> wcscat(szBuff, vs.bstrVal);</p><p> if(wcslen(szBuff) > 0)<br /> wcscat(szBuff, L"=> " );<br /> }</p><p> Val.ChangeType(VT_BSTR);<br /> wcscat(szBuff, Val.bstrVal);</p><p> if(wcslen(szBuff) > 0)<br /> wcscat(szBuff, L"/r/n" );<br /> OutputDebugStringW(szBuff);<br /> }<br /> catch (_com_error &e)<br /> {<br /> AfxMessageBox(e.ErrorMessage());<br /> }<br /> }</p><p> #define __TRACE(Val) /<br /> { /<br /> TCHAR szInfo[1024];/<br /> memset( szInfo, 0 , sizeof(szInfo));/<br /> wsprintf( szInfo, _T("%s(%d): %s"),__FILE__, __LINE__, #Val);/<br /> _TRACE( szInfo, Val);/<br /> }</p><p>#else<br /> #ifdef __noop<br /> #define _TRACE(x,y) __noop<br /> #define __TRACE(Val) __noop<br /> #else<br /> #define _TRACE(x,y) //<br /> #define __TRACE(Val) //<br /> #endif<br />#endif<br />
//簡單的測試代碼<br /> double Val = 8.54;<br /> _TRACE( _T("Test"), Val);<br /> _TRACE( _T("String"), _T("ABCD"));</p><p> __TRACE( Val );
輸出
Test=> 8.54
String=> ABCD
C:/TEMP/ff/ff.cpp(106): Val=> 8.54