【发布时间】:2016-07-19 15:54:50
【问题描述】:
为什么
#define assert(expression) ((void)0),
而不是
#define assert(expression)
是在release模式下使用的?(严格来说,定义NDEBUG的时候)
听说有一些原因,但我忘记了。
【问题讨论】:
-
之后通常会有一个
;,如果assert变成了空,那孤独的剩余;可能会触发警告。 -
后者允许
assert(true)(不带分号),而前者不允许。 -
@MarcGlisse 您应该将其发布为答案。目前,您的评论是唯一能真正回答发帖人问题的陈述。
标签: c++ c-preprocessor noop