【发布时间】:2019-12-13 11:01:43
【问题描述】:
假设我有以下用于记录的宏
TRACE(类型、子类型、消息、fmt、args);
现在我需要打额外的参数,比如机器 IP 到这个日志:
#include <conio.h>
char *IP = "100.200.200.100";
#define TRACE(type, sub-type, message, fmt, args) do{ <<<< expands to func which logs to a file >>>> }while(0)
#define NEW_TRACE(type, sub-type, message, fmt, args) do { \
TRACE (type, sub-type, message, fmt, ##args); \
} while (0)
int main()
{
char *w = "world!";
NEW_TRACE("my-type", "my-subtype", 2, "Hello %s", w);
return 0;
}
如何编写 NEW_TRACE 以便将 'IP' 打入日志? 有什么想法吗!?
【问题讨论】:
-
宏扩展包括
<<<< expands to func which logs to a file >>>>。为什么不修改“记录到文件的函数”?完全不需要修改宏。 -
好吧,修改“记录到文件的函数”对我来说不是一个选项。
标签: c++ variadic-macros