c++ - 是否有基本 win32 C++ 的 TRACE 语句?

标签 c++ debugging winapi visual-c++-6

在 MFC C++ (Visual Studio 6) 中,我习惯使用 TRACE 宏进行调试。是否有适用于普通 win32 的等效语句?

最佳答案

_RPTn 很好用,虽然不是很方便。 Here is some code将 MFC TRACE 语句重新创建为允许可变数量参数的函数。还添加了 TraceEx 宏,它在源文件和行号之前添加,以便您可以单击返回到语句的位置。

更新:CodeGuru 上的原始代码无法在 Release 模式下为我编译,因此我更改了在 Release 模式下删除 TRACE 语句的方式。这是我放入 Trace.h 的完整源代码。 感谢 Thomas Rizos 的原创:

// TRACE macro for win32
#ifndef __TRACE_H__850CE873
#define __TRACE_H__850CE873

#include <crtdbg.h>
#include <stdarg.h>
#include <stdio.h>
#include <string.h>

#ifdef _DEBUG
#define TRACEMAXSTRING  1024

char szBuffer[TRACEMAXSTRING];
inline void TRACE(const char* format,...)
{
    va_list args;
    va_start(args,format);
    int nBuf;
    nBuf = _vsnprintf(szBuffer,
                   TRACEMAXSTRING,
                   format,
                   args);
    va_end(args);

    _RPT0(_CRT_WARN,szBuffer);
}
#define TRACEF _snprintf(szBuffer,TRACEMAXSTRING,"%s(%d): ", \
                &strrchr(__FILE__,'\\')[1],__LINE__); \
                _RPT0(_CRT_WARN,szBuffer); \
                TRACE
#else
// Remove for release mode
#define TRACE  ((void)0)
#define TRACEF ((void)0)
#endif

#endif // __TRACE_H__850CE873

关于c++ - 是否有基本 win32 C++ 的 TRACE 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/451749/

相关文章:

c++ - 在 Windows 中查找推荐的显示器分辨率

c++ - 使用 reinterpret_cast 将数据从 std::vector<double> reshape 为指定维度的 double**

debugging - Strapi : debug ⛔️ Server wasn't able to start properly

c++ - 工具链还是 IDE? (调试问题)

debugging - Xamarin native iOS 断点未命中 VS2017

c++ - 在应用程序启动之前需要特定的事件完成

c++ - 模式消息循环中的 WM_CLOSE

python - 如何在 Windows 上最大化窗口并禁用调整大小而不覆盖任务栏 - tkinter/tk-toolkit

c++ - 如何在 MDI MFC C++ Windows 应用程序中动态更改 CFormView WIDTH 或 HEIGHT?

c++ - 如何从派生类访问基类中的 vector ?