### VC 调试宏的应用

答案：

在调试时可以使用 TRACE 宏将字符串输出到编译器的输出窗口中，这样就可以在程序运行时将任何一种数据类型以字符串的形式输出。通过对该宏的定义可以看到，其实就是调用了一个名为 AfxTrace 的方法，定义代码如下：

void AFX_CDECL AfxTrace(LPCTSTR lpszFormat, ...);

#define TRACE ::AfxTrace

通过对源代码的分析可以看出，这一功能就是将输出的字符串通过 afxDump 所指向的类进行输出。实现代码如下：

void AFX_CDECL AfxTrace(LPCTSTR lpszFormat, ...)

{

#ifdef _DEBUG // all AfxTrace output is controlled by afxTraceEnabled

if (!afxTraceEnabled)

return;

#endif

va_list args;

va_start(args, lpszFormat);

int nBuf;

TCHAR szBuffer[512];

nBuf = _vsntprintf(szBuffer, _countof(szBuffer), lpszFormat, args);

ASSERT(nBuf >= 0);

if ((afxTraceFlags & traceMultiApp) && (AfxGetApp() != NULL))

afxDump << AfxGetApp()->m_pszExeName << ": ";

afxDump << szBuffer;

va_end(args);

}

#endif //_DEBUG

下面通过一段代码学习这个宏的应用，代码如下：

int count =100;

CString str("数量：");

TRACE("%s%d\n",str,count);