errno, _doserrno, _sys_errlist y _sys_nerr.

Macros globales que contienen códigos de error que se establecen durante la ejecución del programa, así como los equivalentes de cadena de esos códigos para mostrarlos.

Sintaxis

#define errno   (*_errno())
#define _doserrno   (*__doserrno())
#define _sys_errlist (__sys_errlist())
#define _sys_nerr (*__sys_nerr())

Comentarios

El runtime establece en 0 errno y _doserrno durante el inicio del programa. errno se establece en un error en una llamada de nivel del sistema. Puesto que errno contiene el valor de la última llamada que la estableció, las llamadas posteriores pueden cambiar este valor. Las llamadas de biblioteca en tiempo de ejecución que se establecen errno en un error no se borran errno correctamente. Borre siempre errno llamando a _set_errno(0) inmediatamente antes de que una llamada pueda establecerlo, y compruébelo inmediatamente después de la llamada.

En un error, errno no se establece necesariamente en el mismo valor que el código de error devuelto por una llamada del sistema. En operaciones de E/S, _doserrno almacena los equivalentes de código de error del sistema operativo de los códigos de errno. Para la mayoría de las operaciones que no son de E/S, no se establece el valor de _doserrno .

Cada valor de errno se asocia a un mensaje de error en _sys_errlist que se puede imprimir mediante una de las funciones perror, o almacenar en una cadena mediante una de las funciones strerror o strerror_s. Las funciones perror y strerror usan la matriz _sys_errlist y _sys_nerr (número de elementos en _sys_errlist) para procesar la información del error. El acceso directo a _sys_errlist y _sys_nerr está en desuso por motivos de seguridad de código. Se recomienda usar las versiones funcionales y más seguras en lugar de emplear macros globales, como se muestra aquí:

Macro global Equivalentes funcionales
_doserrno _get_doserrno, _set_doserrno
errno _get_errno, _set_errno
_sys_errlist, _sys_nerr strerror_s, _strerror_s, _wcserror_s, __wcserror_s

Las rutinas matemáticas de la biblioteca establecen errno llamando a _matherr. Para controlar los errores matemáticos de otra manera, escriba su propia rutina de acuerdo con la descripción de referencia de _matherr y asígnele el nombre _matherr.

Todos los valores de errno son constantes predefinidas en <errno.h> y son compatibles con UNIX. Solo ERANGE, EILSEQ y EDOM se especifican en el estándar ISO C99. Para obtener una lista completa, consulte errno constantes.

Requisitos

Macro global Encabezado necesario Encabezado opcional
errno <errno.h> o <stdlib.h>, <cerrno> o <cstdlib> (C++)
_doserrno, _sys_errlist, _sys_nerr <stdlib.h>, <cstdlib> (C++) <errno.h>, <cerrno> (C++)

Las macros _doserrno, _sys_errlist y _sys_nerr son extensiones de Microsoft. Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Consulte también

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