Partager via


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