我正在尝试用C语言编写一个无开销的日志记录宏。
我的第一个想法是:
#define debug_print(...) \
{ \
printf(_LOG_FMT, _LOG_ARGS); \
printf(__VA_ARGS__); \
printf("\n"); \
}
但这有一个问题,我必须打三遍printf(开销)。
我的第二个想法是:
#define _LOGFUNCTION(LEVEL, message, ...) \
printf(_LOG_FMT message "\n", _LOG_ARGS, __VA_ARGS__)
但是现在我无法将其传递给简单的字符串进行记录。它将抱怨VA_ARGS中的零参数。
有没有办法解决这两个问题?
非常感谢您的帮助!
答案 0 :(得分:0)
从上面的评论中找到答案!
#define BAR_HELPER(fmt, ...) printf(fmt "\n%s", __VA_ARGS__)
#define BAR(...) BAR_HELPER(__VA_ARGS__, "")
https://stackoverflow.com/a/8673872/5531233
再次感谢一些程序员伙计!