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)