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 (https://www.gnu.org/licenses/gpl-3.0.html) 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.