は、このコードを見てみましょう:空 "リリース" ASSERTマクロがプログラムをクラッシュさせますか?
#include <cassert>
#ifdef DEBUG
#define ASSERT(expr) assert(expr)
#else
#define ASSERT(expr)
#endif /* DEBUG */
をプログラムでは、それ以外の場合は、ハングアップしていない結果で終了します、私はDEBUG
を定義した場合にのみ実行されます。私はEclipse Indigo CDTでMinGWを使用しています。アドバイスをいただければ幸いです!
:一部の人々は何かを
VERIFY
マクロを導入常にコードを実行:
アサーションを使用するだけで、安全かつ健全な方法が値にありますデバッグビルドとリリースビルドの違いについての一般的な理由(最適化後)。 –
お返事ありがとうございます、ただ1つの質問です。非デバッグのために '#define ASSERT(expr)(expr)'(Kerrek SBと同じように)を#定義し、そこからの副作用を心配するのは良い習慣でしょうか?私はこれが私のコードをより読みやすくすると感じています。 – AutoBotAM
@AutoBotAM:代わりに 'ASSERT''を' VERIFY'と呼ぶなら、確かに進んでください。しかし、 'ASSERT'を再定義しないでください。人々は' NDEBUG'ビルドの表現を評価しないことを知っていて、期待しています。 –