【发布时间】:2011-12-20 05:17:01
【问题描述】:
我正在查看第三方代码库并查看 assert 宏的定义:
#define assert( x ) \
if( !( x ) ) { \
ThrowException( __FILE__, __LINE__ ); \
} else \
((void)1)
(void)1 有什么意义?它比惯用的(void)0 好在哪里?
【问题讨论】:
-
只是缺乏想象力。用 (void)42 替换它很明显。
-
这是特殊的:google.com/codesearch#nJHaZQ1IJ84/trunk/third_party/…,它使用
(void)1和(void)0。也许在检查预处理输出时区分两者?
标签: c++ visual-c++ assert noop