Assertions C ++ pouvant afficher une chaîne personnalisée avec Boost ou STL?
Question
Je veux vraiment pouvoir aller: (en C ++)
assert( num > 0, "The number must be greater than zero!");
En C # XNA, ils ont une méthode qui fait exactement ceci:
Debug.Assert( num > 0, "The number must be greater than zero!");
Y a-t-il un moyen de faire en sorte que le moteur d'exécution me donne une erreur complète non seulement "une assertion a échoué" erreur?
La solution
Vous pouvez l'utiliser dans la plupart des assertions:
assert(("The number must be greater than zero!", num > 0));
Autres conseils
Le moteur d'exécution affiche généralement l'expression qui a échoué. Vous pouvez donc faire quelque chose comme ceci:
assert(num > 0 && "The number must be greater than zero!");
Ce qui n'affectera pas la logique, mais le message d'échec de l'assertion contiendra une chaîne descriptive.
De plus, cela fonctionne sans avoir besoin de la STL ou du Boost.
Utilisez assert (num > 0 & amp; " Le nombre doit être supérieur à zéro! ");
En utilisant BOOST, vous pouvez utiliser leur assertion comme décrit dans 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!");
ferait exactement comme demandé.