Dans la bibliothèque standard C++,<cassert>
<cassert>Il s'agit d'un fichier d'en-tête de la bibliothèque standard C++ qui fournit une fonctionnalité d'assertion pour vérifier si une condition est vraie à l'exécution. Si la condition est fausse, le programme termine l'exécution et affiche un message d'erreur. Les assertions sont principalement utilisées pendant la phase de débogage pour garantir l'exactitude logique du programme.
Une assertion est un outil de débogage utilisé pour vérifier l'état d'exécution d'un programme pendant le développement. Si une assertion échoue, le programme se termine immédiatement, ce qui aide les développeurs à localiser rapidement le problème.
Syntaxe
cassertinassertLa syntaxe de base de la macro est la suivante :
#include <cassert> assert(expression);
oùexpressionIl s'agit d'une expression booléenne ; si le résultat de l'expression esttrue, alors le programme continue l'exécution ; si le résultat estfalse, le programme se terminera et affichera un message d'erreur.
Exemple
Ci-dessous un exemple d'utilisation decassertun exemple simple :
Exemple
#include <cassert>
int main() {
int a = 5;
int b = 3;
// Vérifier si a est supérieur à b
assert(a > b);
// Si a n'est pas supérieur à b, le programme se terminera ici et affichera un message d'erreur
std::cout << "a est supérieur à b" << std::endl;
return 0;
}
Résultat de sortie
Lorsque le programme ci-dessus est exécuté, puisqueaEffectivement supérieurb, donc le programme s'exécutera normalement et affichera :
a is greater than b
Si nous modifionsala valeur est 2, ce qui fait qu'elle n'est pas supérieure àb, le programme affichera un message d'erreur et se terminera :
Assertion failed: a > b, file main.cpp, line 8.
Utilisation avancée des assertions
assertLa macro peut également accepter une expression supplémentaire pour afficher un message d'erreur personnalisé :
Exemple
#include <cassert>
int main() {
int x = 10;
int y = 0;
// Utiliser un message d'erreur personnalisé
assert(y != 0 && "Erreur de division par zéro");
int result = x / y; // Cette ligne de code ne s'exécutera pas car l'assertion a échoué
return 0;
}
Lorsque le programme ci-dessus est exécuté, puisqueyvaut 0, l'assertion échouera et affichera :
Division by zero error Assertion failed: y != 0 && "Division by zero error", file main.cpp, line 8.
Notes
-
Dans les versions de publication des programmes, les assertions sont généralement désactivées pour éviter que le programme ne se termine de manière inattendue au moment de l'exécution. Cela peut être fait en définissant
NDEBUGImplémenté avec une macro :#define NDEBUG #include <cassert>
-
Les assertions ne doivent être utilisées que pour vérifier les erreurs logiques du programme, et non pour gérer les erreurs d'exécution. Les erreurs d'exécution doivent être gérées au moyen de la gestion des exceptions ou d'autres mécanismes.
-
L'expression de l'assertion doit être simple, en évitant une logique ou des calculs complexes afin de réduire la surcharge de performance.
en utilisantcassertinassertmacro, les développeurs peuvent rapidement découvrir et corriger les erreurs logiques pendant le processus de développement, améliorant ainsi la stabilité et la fiabilité du programme.