TRACE 宏有点象我们以前在C语言中用的Printf函数,使程序在运行过程中输出一些调试信息,使我们能了解程序的一些状态。在Output中可以查看到结果。
但有一点不同的是:TRACE 宏只有在调试状态下才有所输出,而以前用的Printf 函数在任何情况下都有输出。和Printf 函数一样,TRACE函数可以接受多个参数如:
int x = 1;
int y = 16;
float z = 32.0;
TRACE( "This is a TRACE statement/n" );
TRACE( "The value of x is %d/n", x );
TRACE( "x = %d and y = %d/n", x, y );
TRACE( "x = %d and y = %x and z = %f/n", x, y, z );
要注意的是TRACE宏只对Debug 版本的工程产生作用,在Release 版本的工程中,TRACE宏将被忽略。
注意:不要采用TRACE宏一次性输出大批量数据或不间断输出数据,因为这样有可能会时程序运行变得非常缓慢,如:
void test_trace_e(void)
{
char *pszDeb=new char[1024*1024];
TRACE("%s/n",pszDeb);
//或者
for(int i=0;i<sizeof(pszDeb);i++)
{
TRACE("%c/n",pszDeb[i]);
}
}
有一点需要注意的是,TRACE宏在只在调试(DEBUG)版本中起作用,而在发行(RELEASE)版本无效,所以不要在TRACE宏中进行对程序状态进行改变的计算或是调用对状态有改变的函数,例如:
void yourClass::fun1()
{
TRACE("%d",++m_iTick); //m_iTick状态改变
TRACE("return value = %d",DoSomething());
}
void yourClass:DoSomething()
{
if(m_szOut == "No")
{
return FALSE;
}
else
{
m_szOut="Yes"; //状态改变
reutrn TRUE;
}
}