Si j'ai quelque chose comme:Appelle à la fonction quels appels s'affirment seront supprimés dans Release ver d'un programme?
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);
}
et dans d'autres endroits dans mon programme, je suis également d'utiliser ces appels identiques à affirmer, donc je voudrais passer hors de ce corps fnc au fnc séparé et placer seulement l'appel à ce Fnc dans les endroits où j'ai maintenant ces appels aux capitaux. Mais corrigez-moi si je me trompe: Ces appels à affirmer seront supprimés dans la version ver, mais si je dois:
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);
}
appelleront à ce fnc également être retiré de la libération ver ou non? Et un autre Q je pense qu'au lieu d'affirmer ici je devrais avoir des vérifications if (! Condition) car quel est l'avantage d'avoir des affirmations si elles seront supprimées dans un ver final. Qu'est-ce que tu penses?
Les assertions sont supprimées lorsque NDEBUG est défini. Ce n'est jamais une bonne idée d'effectuer des déclarations avec des effets secondaires dans les déclarations assert, car ils peuvent être supprimés. –
Il suffit de noter que ces affirmations sont assez inutiles, court ne peut pas contenir des valeurs plus grandes alors 'NumericLimits :: max' –
@Let_Me_Be vous avez absolument raison, voir que juste savoir. –