errno
|
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) |
|
|
Documentación de C
para
errno
|
|