# 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/>. changetype (vt_bstr); <br/> wcscat (szbuff,. 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/>}</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/>
// Simple test code <br/> double val = 8.54; <br/> _ trace (_ T ("test"), Val ); <br/> _ trace (_ T ("string"), _ T ("ABCD"); </P> <p> _ trace (VAL );
Output
Test => 8.54
String => ABCD
C:/temp/FF/ff. cpp (106): val = & gt; 8.54