我正在审核第三方代码库并查看assert
宏的定义:
#define assert( x ) \
if( !( x ) ) { \
ThrowException( __FILE__, __LINE__ ); \
} else \
((void)1)
(void)1
有什么意义?它比惯用语(void)0
更好吗?
答案 0 :(得分:4)
(void)1
和(void)0
之间没有区别。
答案 1 :(得分:4)
我认为这并不重要(并且会被编译器优化掉)。 <cassert>
是标准C ++标头(使用标准<assert.h>
C标头),它定义了标准assert
宏,因此应用程序不应重新定义它。