当前位置:  开发笔记 > 编程语言 > 正文

如何在非MFC项目中使用TRACE宏?

如何解决《如何在非MFC项目中使用TRACE宏?》经验,为你挑选了2个好方法。

我想在非MFC C++项目中使用TRACE()宏在Visual Studio 2005的调试窗口中获取输出,但需要哪个额外的头文件或库?

有没有办法将消息放入调试输出窗口,我该怎么做?



1> Ferruccio..:

建立你自己的.

trace.cpp:

#ifdef _DEBUG
bool _trace(TCHAR *format, ...)
{
   TCHAR buffer[1000];

   va_list argptr;
   va_start(argptr, format);
   wvsprintf(buffer, format, argptr);
   va_end(argptr);

   OutputDebugString(buffer);

   return true;
}
#endif

trace.h里:

#include 
#ifdef _DEBUG
bool _trace(TCHAR *format, ...);
#define TRACE _trace
#else
#define TRACE false && _trace
#endif

然后只需#include"trace.h"就可以了.

免责声明:我只是从个人项目中复制/粘贴此代码并拿出一些项目特定的东西,但没有理由它不应该工作.;-)


在发布版本中,Visual Studio会为每个TRACE事件生成警告C4013(警告级别3)以及警告C4555(警告级别全部).为了防止警告,我将`false && _trace`部分更改为`__noop`.这也是MFC的做法.
对于Linux C++,我使用`#include `,`#include `修改了代码,将`wvsprinf`替换为`vsnprinf`.然后用`std :: clog << buffer << std :: flush;`替换`OutputDebugString`.

2> Ulf Lindback..:

如果您使用ATL,您可以尝试ATLTRACE.

TRACE在afx.h中定义为(至少在vs 2008中):

// extern ATL::CTrace TRACE;
#define TRACE ATLTRACE

ATLTRACE可以在atltrace.h中找到

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有