我使用以下方法来计算函数的时间:
#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__
is not va_list
类型,但参数以逗号分隔,因此您需要使用sprintf_s
, not vsprintf_s
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)