具有可变宏的 c 日志记录

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