【发布时间】:2012-04-05 03:19:24
【问题描述】:
我有一个 trace() 宏,我用另一个宏打开和关闭,例如
#ifdef TRACE
#define trace(x) trace_val(x, 0)
#else
#define trace(x) 0
#endif
当我用未定义的TRACE 调用trace() 时,这会从gcc 生成warning: statement with no effect。经过一番搜索,我发现改变了
#define trace(x) 0
到
#define trace(x) (void)0
消除错误。我的问题是:为什么?有什么区别?
【问题讨论】:
-
@OrgnlDave 这个问题没有涉及为什么 (void)0 与 0 不同。
-
我想它没有明确。如果你读到它,它会。删除我的评论为时已晚,但不要担心这不是结束问题的投票