Existe-t-il un moyen d’ajouter ou de modifier le message envoyé par assert? J'aimerais utiliser quelque chose comme
assert(a == b, "A must be equal to B");
Ensuite, le compilateur ajoute la ligne , le temps , etc.
C'est possible?
Existe-t-il un moyen d’ajouter ou de modifier le message envoyé par assert? J'aimerais utiliser quelque chose comme
assert(a == b, "A must be equal to B");
Ensuite, le compilateur ajoute la ligne , le temps , etc.
C'est possible?
Un hack que j'ai vu est d'utiliser l'opérateur &&
. Puisqu’un pointeur "est vrai" s’il n’est pas nul, vous pouvez procéder comme suit sans modifier la condition:
assert(a == b && "A is not equal to B");
Puisque assert
indique la condition qui a échoué, votre message s'affichera également. Si cela ne suffit pas, vous pouvez écrire votre propre fonction ou macro myAssert
qui affichera tout ce que vous voulez.
Une autre option consiste à inverser les opérandes et à utiliser l'opérateur virgule. Vous avez besoin de parenthèses supplémentaires pour que la virgule ne soit pas traitée comme un séparateur entre les arguments:
assert(("A must be equal to B", a == b));
(ceci a été copié des commentaires ci-dessus, pour une meilleure visibilité)
BOOST_ASSERT_MSG(expre, msg)
http://www.boost.org/doc/libs/1_51_0/libs/utility/assert.html
Vous pouvez utiliser cela directement ou copier le code de Boost. Notez également que l'assertion Boost est uniquement en-tête, vous pouvez donc récupérer ce fichier si vous ne souhaitez pas installer l'intégralité de Boost.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.