errno
| Definido en el archivo de encabezado <errno.h>
|
||
#define errno /* definido en la implementación */ |
||
errno es una macro de preprocesador que se expande a un thread-local (desde C11) modificable lvalue de tipo int. Varias funciones de biblioteca estándar indican errores escribiendo números enteros positivos a errno. Normalmente, el valor de errno se ajusta a uno de los códigos de error listados en <errno.h> como constantes de macro que comienzan con la letra E seguida de letras mayúsculas o dígitos.
El valor de errno es 0 al inicio del programa, y aunque las funciones de biblioteca pueden escribir números enteros positivos en errno independientemente de que se haya producido un error, las funciones de biblioteca nunca almacenan 0 en errno.
Las funciones de biblioteca perror y strerror pueden utilizarse para obtener descripciones textuales de las condiciones de error que corresponden al valor actual errno.
Ejemplo
#include <stdio.h>
#include <math.h>
#include <errno.h>
void show_errno(void)
{
if(errno==EDOM) printf("un error en el dominio");
if(errno==EILSEQ) printf("una secuencia ilegal");
if(errno==ERANGE) printf("un error de polo o de alcance");
if(errno==0) printf("ningún error");
printf(" ha ocurrido\n");
}
int main(void)
{
printf("MATH_ERRNO %s\n", math_errhandling & MATH_ERRNO ? "se ha fijado" : "no se ha fijado");
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();
}
Salida:
MATH_ERRNO se ha fijado
un error de polo o de alcance ha ocurrido
un error en el dominio ha ocurrido
un error de polo o de alcance ha ocurrido
ningún error ha ocurrido
Referencias
- Standard C11 (ISO/IEC 9899:2011):
- 7.5 Errors <errno.h> (p: 205)
- K.3.1.3 Use of errno (p: 584)
- K.3.2 Errors <errno.h> (p: 585)
- Standard C99 (ISO/IEC 9899:1999):
- 7.5 Errors <errno.h> (p: 186)
- Standard C89/C90 (ISO/IEC 9899:1990):
- 4.1.3 Errors <errno.h>
Véase también
| macros para condiciones de error estándar compatibles con POSIX (constante de macro) | |
| muestra una cadena de caracteres correspondiente al error actual a stderr (función) | |
(C11)(C11) |
retorna una versión de texto de un código de error dado (función) |
(C99)(C99)(C99) |
define el mecanismo de manejo de errores utilizado por las funciones matemáticas comunes (constante de macro) |