在Release版本中输出打印信息,实现TRACE功能

来源:互联网 发布:常熟淘宝拍卖 编辑:程序博客网 时间:2024/05/16 19:42

在Release版本中不支持TRACE打印信息。所以在Release中需要自己实现TRACE,由于在VC6.0中不支持宏传递可变参数,所以编写函数实现TRACE;

1. 在stdafx.cpp中编写函数实现TRACE功能;

CStdioFile gDbFile;

void __cdecl db_print(const char *lpszFormat,...)
{
#ifdef REL_PRINT
#ifdef NDEBUG
int nBuf;
char szBuffer[512];
memset(szBuffer,0,512); 
va_list args;
va_start(args,lpszFormat);

nBuf = _vsnprintf(szBuffer, sizeof(szBuffer), lpszFormat, args);

gDbFile.WriteString(szBuffer);
va_end(args);
#endif
#endif
}

这个函数就是把打印信息写到文件中;

2. 在stdafx.h中声明一下:

extern CStdioFile gDbFile;


#define REL_PRINT
void __cdecl db_print(const char *lpszFormat,...);


#ifdef NDEBUG
#define TRACE db_print
#endif


3. 在应用程序类中的InitInstance()中创建这个文件;

gDbFile.Open("C:\\XXX_Debug.txt",CFile::modeCreate|CFile::modeReadWrite|CFile::shareDenyNone);

在ExitInstance() 中关闭文件:

gDbFile.Close();

通过以上操作,在release中TRACE可以打印信息到文件中。

通过是否定义 REL_PRINT来关闭release中的打印功能。