たまに、C++でno-opステートメントが必要になります。たとえば、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
これは、この特定のケースでは発行されないが、へのキャストがない場合に発行されるVisualC++警告のようなものvoid
です。
それは普遍的に持ち運び可能ですか?もっと良い方法はありますか?