Definido en el encabezado <errno.h> |
||
---|---|---|
#define errno /*implementation-defined*/
|
errno
es una macro de preprocesador que se expande a un hilo-local (desde C11) lvalor de tipo modificable int
. Varias funciones de biblioteca estándar indican errores escribiendo enteros positivos en errno
. Normalmente, el valor de errno
está configurado en uno de los códigos de error enumerados en <errno.h>
como macro constantes que comienzan con la letra E
seguido de letras mayúsculas o dígitos.
El valor de errno
es 0
al inicio del programa, y aunque las funciones de la biblioteca pueden escribir enteros positivos en errno
ya sea que haya ocurrido un error o no, las funciones de la biblioteca nunca almacenan 0
en errno
.
Funciones de biblioteca perror
y strerror
se puede utilizar para obtener descripciones textuales de las condiciones de error que corresponden a la errno
valor.
Ejemplo
#include <stdio.h> #include <math.h> #include <errno.h> void show_errno(void) { if(errno==EDOM) printf("domain error"); if(errno==EILSEQ) printf("illegal sequence"); if(errno==ERANGE) printf("pole or range error"); if(errno==0) printf("no error"); printf(" occurredn"); } int main(void) { printf("MATH_ERRNO is %sn", math_errhandling & MATH_ERRNO ? "set" : "not set"); errno = 0; 1.0/0.0; show_errno(); errno = 0; acos(+1.1); show_errno(); errno = 0; log(0.0); show_errno(); errno = 0; sin(0.0); show_errno(); }
Producción:
MATH_ERRNO is set pole or range error occurred domain error occurred pole or range error occurred no error occurred
Referencias
- Estándar C11 (ISO / IEC 9899: 2011):
- 7.5 Errores
(pág: 205) - K.3.1.3 Uso de errno (p: 584)
- K.3.2 Errores
(pág: 585) - Estándar C99 (ISO / IEC 9899: 1999):
- 7.5 Errores
(pág: 186) - Estándar C89 / C90 (ISO / IEC 9899: 1990):
- 4.1.3 Errores
Ver también
E2BIG, EACCES, …, EXDEV | macros para condiciones de error estándar compatibles con POSIX (macro constante) |
perror | muestra una cadena de caracteres correspondiente al error actual a stderr (función) |
strerrorstrerror_sstrerrorlen_s (C11)(C11) |
devuelve una versión de texto de un código de error dado (función) |
math_errhandlingMATH_ERRNOMATH_ERREXCEPT (C99)(C99)(C99) |
define el mecanismo de manejo de errores utilizado por las funciones matemáticas comunes (macro constante) |