偶尔需要在 C++ 中使用无操作语句。例如,assert()
在非调试配置中实现禁用时(另请参阅此问题):
#ifdef _DEBUG
#define assert(x) if( !x ) { \
ThrowExcepion(__FILE__, __LINE__);\
} else {\
//noop here \
}
#else
#define assert(x) //noop here
#endif
到目前为止,我的印象是正确的方法是使用(void)0;
无操作:
(void)0;
但是我怀疑它可能会在某些编译器上触发警告——比如C4555: expression has no effect; expected expression with side-effect
Visual C++ 警告,它不会针对这种特殊情况发出,但在没有强制转换为void
.
它是通用便携的吗?有没有更好的办法?