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