首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确使用ifdef进行自定义调试

问正确使用ifdef进行自定义调试
EN

Stack Overflow用户
提问于 2020-09-18 17:03:09
回答 1查看 30关注 0票数 1

我正在尝试打印消息,如果它是一个调试版本。所以我写了下面的代码:

代码语言:javascript
复制
#ifdef MY_DEBUG
#define dbg_printf fprintf
#else
#define dbg_printf
#endif

dbg_printf(stderr, "item: %s\n", config[i]);

当没有定义MY_DEBUG时,我得到了以下消息:

代码语言:javascript
复制
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中吗?最佳实践是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-18 17:08:23

当您的宏展开为空时,会留下参数列表,该列表将变成一个搁置的逗号表达式。通常的解决方案是在宏内匹配并转发参数列表,并在禁用时将其全部替换为noop语句。

代码语言:javascript
复制
#ifdef MY_DEBUG
#define dbg_printf(...) fprintf(__VA_ARGS__)
#else
#define dbg_printf(...) (0)
#endif
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63952639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档