I'm trying to write an overhead-free logging macro in C.
My first idea is:
#define debug_print(...) \
{ \
printf(_LOG_FMT, _LOG_ARGS); \
printf(__VA_ARGS__); \
printf("\n"); \
}
But this has the problem that I have to call printf three times (overhead).
My second idea is:
#define _LOGFUNCTION(LEVEL, message, ...) \
printf(_LOG_FMT message "\n", _LOG_ARGS, __VA_ARGS__)
But now I can't pass it a simple string to log. It'll complain about zero arguments in VA_ARGS.
Is there a way to fix both of these problems?
Thanks a ton for your help!
转载于:https://stackoverflow.com/questions/53111416/c-logging-with-variadic-macros
Found the answer form the comment above!
#define BAR_HELPER(fmt, ...) printf(fmt "\n%s", __VA_ARGS__)
#define BAR(...) BAR_HELPER(__VA_ARGS__, "")
https://stackoverflow.com/a/8673872/5531233
Thanks again Some programmer dude!
https://blog.csdn.net/song527730241/article/details/49744095