BoostまたはSTLでカスタム文字列を表示できるC ++アサーション?
質問
本当に行きたい:(C ++)
assert( num > 0, "The number must be greater than zero!");
C#XNAには、まさにこれを行うメソッドがあります:
Debug.Assert( num > 0, "The number must be greater than zero!");
「アサーションが失敗しました」だけでなく、ランタイムが意味のある完全なエラーを返すように、これを行う方法はありますか?エラー?
解決
ほとんどのアサーションでこれを使用できます:
assert(("The number must be greater than zero!", num > 0));
他のヒント
通常、ランタイムは失敗した式を表示するため、次のようなことができます。
assert(num > 0 && "The number must be greater than zero!");
ロジックには影響しませんが、アサーション失敗メッセージには説明的な文字列が含まれます。
さらに、これはSTLまたはBoostを必要とせずに機能します。
assert(num> 0&&"数値はゼロより大きくなければなりません!");
BOOSTを使用すると、 httpで説明されているアサートを使用できます。 //www.boost.org/doc/libs/1_50_0/libs/utility/assert.html :
#include <boost/assert.hpp>
/* ... */
BOOST_ASSERT_MSG( num > 0, "The number must be greater than zero!");
要求どおりに実行します。
所属していません StackOverflow