2011-07-11 35 views
4

Visual C++ 2005でassertに異常な問題があります。プログラムにアサートを導入しようとしましたが、何をアサートしてもassert()またはBOOST_ASSERT_MSG )それは私にデバッグエラーが発生したこと以外何も教えてくれない全く同じエラーメッセージを出します。アサートでエラーメッセージが表示されない

デバッグエラー!

プログラム:...

このアプリケーションは、異常な方法で終了するランタイムを要求しました。 詳細については、サポートチームにお問い合わせください。

(押して再試行がアプリケーションをデバッグする)

は、ここで私は

BOOST_ASSERT_MSG(deathRow.size() >= 3, "There are less than 3 blocks being deleted!"); 

を使用していブースト主張だそして、はい、それはとまったく同じエラーメッセージを表示します。

assert(deathRow.size() >= 3 && "There are less than 3 blocks being deleted"); 

私が使っているプロジェクトに関係なく、新旧の区別なくエラーが発生します。

私には理由が分かりません。私は以前に別のプログラムで主張を使用していて、この問題がないことを知っています。ヘルプをいただければ幸いです。あなたは、Microsoftの_ASSERTEマクロを使用する場合は

答えて

6

は、そのメッセージもアサートダイアログに表示されます(ためEに注意してください)。

ASSERTの両方のバージョンが存在する理由は、両方に長所と短所があり、必要なものを選択できるからです。

  • _ASSERTE
  • _ASSERT少ないアサートダイアログ内の情報が、小さなバイナリで結果を与える(式のテキスト表現をバイナリに含まれていなければならないので)大きめのバイナリでより良い診断が、結果を提供します。

両方のフレーバはデバッグビルドでのみコードを生成するので、バイナリのサイズはほとんど影響を受けず、デバッグビルドではあまり重要ではないため、常に_ASSERTEを使用する傾向があります。

+0

ああ、それはうまくいくようです。ありがとう、私は_ASSERTEを使用すると思います。他の主張がうまくいかない理由を知りたいと思うことはまだありますか? – Mathmagician

+0

@Mathmagician他のバージョンは動作していますが、それほど説明的ではありません。あなたがそれを望む理由を反映するために私の答えを更新しました。 – Motti

関連する問題