définitions et déclarations relatives aux erreurs Plus de détails...
Macros | |
#define | EDOM |
erreur de domaine | |
#define | ERANGE |
erreur d'intervalle. | |
#define | EILSEQ |
erreur de codage. | |
#define | errno |
code de la dernière erreur. |
Cet entête fournit des macros utilisées pour la gestion des erreurs.
#define EDOM |
Valeur stockée dans errno
pour signaler l'appel d'une fonction avec des arguments hors du domaine valide. C'est une expression constante entière non nulle pouvant être utilisée dans les directives du préprocesseur.
#define EILSEQ |
Valeur stockée dans errno
pour indiquer une erreur de codage: qu'une suite de bytes ne forme pas un caractère multibyte valide ou qu'une valeur stockée dans un wchar_t n'est pas caractère étendu valide. C'est une expression constante entière non nulle pouvant être utilisée dans les directives du préprocesseur.
#define ERANGE |
Valeur stockée dans errno
pour signaler que le résultat d'une fonction se trouve en dehors de l'intervalle représentable. C'est une expression constante entière non nulle pouvant être utilisée dans les directives du préprocesseur.
#define errno |
Lvalue modifiable de type int
contenant le code de la dernière erreur détectée. La description permet une définition comme *__errno()
, ce qui peut être utile par exemple dans une implémentation fournissant des threads et ayant un code d'erreur par thread -- les implémentations conformes à POSIX sont dans ce cas.
La valeur de errno
est 0 au début du programme. Aucune fonction de la bibliothèque ne remet errno
à 0 par la suite, mais elles peuvent en modifier la valeur sans pourtant qu'il y ait une erreur.
Pour les fonctions qui retournent une valeur singulière pour signaler qu'elles ont échoué, il ne faut donc tenir compte de la valeur de errno
qu'après avoir constaté que la fonction a échoué.
Certaines fonctions mathématiques n'ont pas d'autres indications d'échec que errno
; dans cas il faut mettre errno
à 0 avant d'exécuter la fonction et ensuite vérifier si errno
est toujours nul.
Il est courant et conforme pour les implémentations d'étendre les valeurs possibles de errno
et d'utiliser ce mécanisme non seulement en cas d'erreur dans des fonctions non définies par la norme mais aussi pour permettre de discerner la cause de l'échec de fonctions que la norme n'indique pas utiliser errno
(en cas d'échec, les fonctions que la norme indique utiliser errno
doivent placer dans errno
une des valeurs données dans leur description). Par exemple fopen() retourne NULL
en cas d'échec, mais aucune information n'est donnée sur la nature du problème ayant empéché l'ouverture; POSIX demande que fopen() assigne une valeur décrivant le problème à errno
.
Voir aussi les fonctions strerror() et perror().