table of contents
assert(3) | Library Functions Manual | assert(3) |
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¶
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 à debian-l10n-french@lists.debian.org.
2 mai 2024 | Pages du manuel de Linux (non publiées) |