私のようなものを持っている場合:私も主張したものと同一の呼び出しを使用していますので、私は別のFNCにこのFNC体の外に移動したいと思い アサートを呼び出す関数への呼び出しは、プログラムのリリース版で削除されますか?
static long double calcFactor_(const short mantissa, const short exponent,const short base = Derived::internals_.base_)
{
assert(mantissa > 0);
assert(mantissa < NumericLimits<short>::max);
assert(exponent < NumericLimits<short>::max);
assert(exponent > NumericLimits<short>::min);
assert(base < NumericLimits<short>::max);
assert(base > NumericLimits<short>::min);
return mantissa * ::pow(static_cast<long double>(base),exponent);
}
と私のプログラムの他の場所で
と私は今、これらの資産を呼び出す場所にこのfncを呼び出すだけです。しかし、私が間違っているなら、私を修正:版のリリースでは削除されます主張するものの呼び出しは私が持っている場合:void Assert (//neccesary args here)
{
assert(mantissa > 0);
assert(mantissa < NumericLimits<short>::max);
assert(exponent < NumericLimits<short>::max);
assert(exponent > NumericLimits<short>::min);
assert(base < NumericLimits<short>::max);
assert(base > NumericLimits<short>::min);
}
もうたリリースから削除するか、しないかを、このFNCに呼び出すのでしょうか?そして別のQ私はここで主張するのではなく、最終版で削除されると主張する利点があるので、if(!condition)のチェックが必要だと思います。どう思いますか?
NDEBUGが定義されているとアサーションが削除されます。アサーションステートメント内で副作用のあるステートメントを実行することは、決して良い考えではありません。 –
これらのアサーションはかなり役に立たないことに注意してください。短いものはNumericLimits :: max'より大きい値を含むことができません。 –
@Let_Me_Beあなたは絶対に正しいです。 @Let_Me_Be。 –