assert - Terminer le programme en cas d'échec d'un test
Bibliothèque C standard (
libc,
-lc)
#include <assert.h>
void assert(scalar expression);
Cette macro peut assister les programmeurs dans leur recherche de bogues ou
gérer des cas exceptionnels avec un plantage qui produira une
information de débogage limitée.
Si
expression est fausse (c'est-à-dire, comparaison de son
égalité à zéro)
assert() affiche un message
d'erreur sur la sortie d’erreur et termine le programme par un appel
à
abort(3). Le message d'erreur inclut le nom du fichier et de
la fonction contenant l'appel à
assert(), le numéro de
ligne de cet appel, ainsi que le texte de l'argument ; quelque chose
comme :
prog: un_fichier.c:16: une_fonction: L'assertion `val == 0' a échouée.
Si la macro
NDEBUG est définie au moment de la dernière
inclusion de
<assert.h>, la macro
assert() ne
génère aucun code et ne fait donc rien. Il n'est pas
recommandé de définir
NDEBUG si
assert() est
utilisé pour détecter des conditions d'erreur puisque le
logiciel peut se comporter de façon non déterministe.
Aucune valeur n'est renvoyée.
Pour une explication des termes utilisés dans cette section, consulter
attributes(7).
Interface |
Attribut |
Valeur |
assert() |
Sécurité des threads |
MT-Safe |
POSIX.1-2001, POSIX.1-2008, C99.
assert() étant implémentée comme une macro, si
l'expression testée a des effets de bord, le comportement du programme
différera suivant l'existence de
NDEBUG. Cela peut induire des
« Heisenbugs » (N.d.T : bogue qui
disparaît ou se modifie quand on essaye de le localiser) qui
disparaissent lors du débogage.
abort(3),
assert_perror(3),
exit(3)
La traduction française de cette page de manuel a été
créée par Christophe Blaess
<
https://www.blaess.fr/christophe/>, Stéphan Rafin
<
[email protected]>, Thierry Vignaud
<
[email protected]>, François Micaux, Alain Portal
<
[email protected]>, Jean-Philippe Guérard
<
[email protected]>, Jean-Luc Coulon (f5ibh)
<
[email protected]>, Julien Cristau
<
[email protected]>, Thomas Huriaux <
[email protected]>,
Nicolas François <
[email protected]>, Florentin
Duneau <
[email protected]>, Simon Paillard
<
[email protected]>, Denis Barbier
<
[email protected]>, David Prévot <
[email protected]> et
Grégoire Scano <
[email protected]>
Cette traduction est une documentation libre ; veuillez vous reporter
à la
GNU
General Public License version 3 concernant les conditions de copie
et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
[email protected]