gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 17:15:31 25 4
gpt4 key购买 nike

在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com