我正在尝试打印消息,如果它是一个调试版本。所以我写了下面的代码:
#ifdef MY_DEBUG
#define dbg_printf fprintf
#else
#define dbg_printf
#endif
dbg_printf(stderr, "item: %s\n", config[i]);当没有定义MY_DEBUG时,我得到了以下消息:
main.c:xxx:xxx: warning: left-hand operand of comma expression has no effect [-Wunused-value]
dbg_printf(stderr, "item: %s\n", config[i]);我试图避免这个消息,但是我应该将-Wunused-value添加到CFLAGS中吗?最佳实践是什么?
发布于 2020-09-18 17:08:23
当您的宏展开为空时,会留下参数列表,该列表将变成一个搁置的逗号表达式。通常的解决方案是在宏内匹配并转发参数列表,并在禁用时将其全部替换为noop语句。
#ifdef MY_DEBUG
#define dbg_printf(...) fprintf(__VA_ARGS__)
#else
#define dbg_printf(...) (0)
#endifhttps://stackoverflow.com/questions/63952639
复制相似问题