C++中的变参宏 #define MyMacro(...)(__VA_ARGS__)

#define HZ_TRACE(...)	Log::Getlogger()->trace(__VA_ARGS__)

类似于这样的宏定义,括号里是…的,被称为可变参数宏,也称为变参宏。它们允许在宏中使用不定数量的参数。

... 为可变参数列表。在调用宏时,可变参数列表中的所有参数都将传递给该宏。

例如,当你使用宏 HZ_TRACE("Logging a message: {}", message) 时,可变参数列表中的两个参数被传递给 Log::GetClientlogger()->trace() 函数。

VA_ARGS 是预处理器宏的一个特殊标识符,它表示可变参数列表。在定义宏时,VA_ARGS 表示可变参数列表中的所有参数。在宏展开时,VA_ARGS 将被替换为实际传递给宏的参数列表。

因此,在宏展开时,HZ_TRACE(...) 实际上被替换为 Log::GetClientlogger()->trace(VA_ARGS),其中 VA_ARGS 表示实际传递给宏的所有参数。这使得宏可以处理不同数量的参数,使得代码更加灵活。

你可能感兴趣的:(C++,c++,开发语言)