Macros | |
#define | EDOM |
erreur de domaine | |
#define | ERANGE |
erreur d'intervalle. | |
#define | errno |
code de la dernière erreur. |
#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 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 dans une implémentation fournissant des threads et ayant un code d'erreur par thread -- les implémentations conformes à POSIX par exemple --, ou dans une implémentation qui ne récupère les erreurs de calcul dans le registre correspondant du processeur que quand on le lui demande.
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
.