errno
, _doserrno
, _sys_errlist
et _sys_nerr
Macros globales qui contiennent des codes d'erreur définis pendant l'exécution du programme et équivalents chaîne des codes d'erreur pour l'affichage.
Syntaxe
#define errno (*_errno())
#define _doserrno (*__doserrno())
#define _sys_errlist (__sys_errlist())
#define _sys_nerr (*__sys_nerr())
Notes
Les éléments errno
et _doserrno
sont définis à 0 par l'exécution lors du démarrage du programme. L'élément errno
est déclenché en cas d'erreur lors d'un appel au niveau système. Comme errno
contient la valeur du dernier appel qui le définit, cette valeur peut être modifiée par les appels suivants. Les appels de bibliothèque d’exécution définis errno
sur une erreur ne sont pas clairs errno
sur la réussite. Supprimez toujours errno
en appelant _set_errno(0)
juste avant un appel qui peut le déclencher, puis vérifiez-le immédiatement après celui-ci.
Lors d’une erreur, errno
n’est pas nécessairement définie sur la même valeur que le code d’erreur retourné par un appel système. En ce qui concerne les opérations d'E/S, _doserrno
stocke les équivalents en codes d'erreur des codes errno
du système d'exploitation. Pour la plupart des opérations d’E/S, la valeur de _doserrno
n’est pas définie.
Chaque errno
valeur est associée à un message d’erreur dans _sys_errlist
lequel l’impression peut être effectuée à l’aide de l’une perror
des fonctions, ou stockée dans une chaîne à l’aide de l’une strerror
des fonctions.strerror_s
Les fonctions perror
et strerror
utilisent le tableau _sys_errlist
et _sys_nerr
, le nombre d'éléments dans _sys_errlist
, pour traiter les informations relatives aux erreurs. Un accès direct à _sys_errlist
et _sys_nerr
est déconseillé pour des raisons de sécurité du code. Nous vous recommandons d'utiliser les versions fonctionnelles plus sécurisées, au lieu des macros globales, comme indiqué ici :
Macro globale | Équivalents fonctionnels |
---|---|
_doserrno |
_get_doserrno , _set_doserrno |
errno |
_get_errno , _set_errno |
_sys_errlist , _sys_nerr |
strerror_s , , _strerror_s _wcserror_s , ,__wcserror_s |
Routines mathématiques de la bibliothèque définies errno
en appelant _matherr
. Pour gérer des erreurs mathématiques différemment, écrivez votre propre routine selon la description de la référence _matherr
, puis appelez-la _matherr
.
Toutes les errno
valeurs sont des constantes prédéfinies dans <errno.h>
, et sont compatibles UNIX. Seuls ERANGE
, EILSEQ
, et EDOM
sont spécifiés dans la norme ISO C99. Pour obtenir une liste complète, consultez errno
les constantes.
Spécifications
Macro globale | En-tête requis | En-tête facultatif |
---|---|---|
errno |
<errno.h> ou , <cerrno> ou <cstdlib> <stdlib.h> (C++) |
|
_doserrno , , _sys_errlist _sys_nerr |
<stdlib.h> , <cstdlib> (C++) |
<errno.h> , <cerrno> (C++) |
Les macros _doserrno
, _sys_errlist
et _sys_nerr
sont des extensions Microsoft. Pour plus d’informations sur la compatibilité, consultez Compatibility.
Voir aussi
Variables globales
errno
Constantes
perror
, _wperror
strerror
, , _strerror
_wcserror
, ,__wcserror
strerror_s
, , _strerror_s
_wcserror_s
, ,__wcserror_s
_get_doserrno
_set_doserrno
_get_errno
_set_errno