Namespaces
Variants

errno

From cppreference.net
Definido en el encabezado <cerrno>
#define errno /* implementation-defined */

errno es una macro del preprocesador utilizada para indicación de errores. Se expande a un static (until C++11) thread-local (since C++11) lvalue modificable de tipo int .

Varias funciones de la biblioteca estándar indican errores escribiendo enteros positivos en errno . Típicamente, el valor de errno se establece en uno de los códigos de error, listados en <cerrno> como constantes 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 enteros positivos en errno independientemente de si ocurrió un error o no, las funciones de biblioteca nunca almacenan 0 en errno .

Ejemplo

#include <cerrno>
#include <clocale>
#include <cmath>
#include <cstring>
#include <iostream>
int main()
{
    const double not_a_number = std::log(-1.0);
    std::cout << not_a_number << '\n';
    if (errno == EDOM)
    {
        std::cout << "log(-1) failed: " << std::strerror(errno) << '\n';
        std::setlocale(LC_MESSAGES, "de_DE.utf8");
        std::cout << "Or, in German, " << std::strerror(errno) << '\n';
    }
}

Salida posible:

nan
log(-1) failed: Numerical argument out of domain
Or, in German, Das numerische Argument ist ausserhalb des Definitionsbereiches

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Se aplica a Comportamiento publicado Comportamiento correcto
LWG 310 C++98 no estaba claro si errno es una macro
o un identificador con enlace externo
errno debe
ser una macro

Véase también

macros para condiciones de error estándar compatibles con POSIX
(macro constante)
muestra una cadena de caracteres correspondiente al error actual en stderr
(función)
devuelve una versión textual de un código de error dado
(función)