gpt4 book ai didi

c++ - 我想使用宏多参数始终为 null 来跟踪日志。问题 C++ Windows

转载 作者:可可西里 更新时间:2023-11-01 14:47:04 25 4
gpt4 key购买 nike

我正在使用以下方法计算函数的时间:

#define TIME_COST(message, ...)\
char szMessageBuffer[2048] = {0};\
va_list ArgList;\
va_start(ArgList, message);\
vsprintf_s(szMessageBuffer, 2048, message, ArgList);\
va_end(ArgList); \
string strMessage(szMessageBuffer);\
CQLogTimer t(strMessage);

//CQLogTimer 是一个自析构函数,它将计算自己的生命周期并打印 szMessageBuffer。但是,当我使用宏时:

void fun
{
TIME_COST("hello->%s", filePath);
XXXXXX
}

生成的消息总是hello->(null)

有人可以帮忙吗?非常感谢!

最佳答案

正确的版本是:

#define TIME_COST(message, ...)\
char szMessageBuffer[2048] = {0};\
sprintf_s(szMessageBuffer, 2048, message, __VA_ARGS__);\
string strMessage(szMessageBuffer);\
CQLogTimer t(strMessage);

__VA_ARGS__不是va_list类型,而是逗号分隔的参数,所以需要使用sprintf_s,而不是vsprintf_s.

关于c++ - 我想使用宏多参数始终为 null 来跟踪日志。问题 C++ Windows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3027729/

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