assert
Table des matières
Retour à l'index
NOM
assert - Terminer le programme en cas d'échec d'un test
BIBLIOTHÈQUE
Bibliothèque C standard (libc, -lc)
SYNOPSIS
#include <assert.h>
void assert(scalar expression);
DESCRIPTION
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.
VALEUR RENVOYÉE
Aucune valeur n'est renvoyée.
ATTRIBUTS
Pour une explication des termes utilisés dans cette section, consulter
attributes(7).
| Interface | Attribut | Valeur
|
|
assert()
| Sécurité des threads | MT-Safe
|
STANDARDS
C11, POSIX.1-2008.
HISTORIQUE
C89, C99, POSIX.1-2001.
Dans C89, expression doit être de type int et le comportement est
indéfini si ce n'est pas le cas, mais dans C99, elle peut être de n'importe
quel type scalaire.
BOGUES
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.
VOIR AUSSI
abort(3), assert_perror(3), exit(3)
TRADUCTION
La traduction française de cette page de manuel a été créée par
Christophe Blaess <https://www.blaess.fr/christophe/>,
Stéphan Rafin <stephan.rafin@laposte.net>,
Thierry Vignaud <tvignaud@mandriva.com>,
François Micaux,
Alain Portal <aportal@univ-montp2.fr>,
Jean-Philippe Guérard <fevrier@tigreraye.org>,
Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>,
Julien Cristau <jcristau@debian.org>,
Thomas Huriaux <thomas.huriaux@gmail.com>,
Nicolas François <nicolas.francois@centraliens.net>,
Florentin Duneau <fduneau@gmail.com>,
Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,
Denis Barbier <barbier@debian.org>,
David Prévot <david@tilapin.org>
et
Grégoire Scano <gregoire.scano@malloc.fr>
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 à
Index
- NOM
-
- BIBLIOTHÈQUE
-
- SYNOPSIS
-
- DESCRIPTION
-
- VALEUR RENVOYÉE
-
- ATTRIBUTS
-
- STANDARDS
-
- HISTORIQUE
-
- BOGUES
-
- VOIR AUSSI
-
- TRADUCTION
-
This document was created by
man2html,
using the manual pages.
Time: 05:06:08 GMT, September 19, 2025