Scroll to navigation

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

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 à debian-l10n-french@lists.debian.org.

2 mai 2024 Pages du manuel de Linux 6.8