errno
|
Défini dans l'en-tête
<cerrno>
|
||
|
#define errno /* implementation-defined */
|
||
errno est une macro de préprocesseur utilisée pour l'indication d'erreur. Elle se développe en une lvalue modifiable (jusqu'en C++11) lvalue modifiable locale au thread (depuis C++11) de type int .
Plusieurs fonctions de la bibliothèque standard indiquent des erreurs en écrivant des entiers positifs dans
errno
. Typiquement, la valeur de
errno
est définie à l'un des codes d'erreur, listés dans
<cerrno>
comme constantes macro qui commencent par la lettre
E
, suivie de lettres majuscules ou de chiffres.
La valeur de errno est 0 au démarrage du programme, et bien que les fonctions de bibliothèque soient autorisées à écrire des entiers positifs dans errno qu'une erreur se soit produite ou non, les fonctions de bibliothèque ne stockent jamais 0 dans errno .
Exemple
#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'; } }
Sortie possible :
nan log(-1) failed: Numerical argument out of domain Or, in German, Das numerische Argument ist ausserhalb des Definitionsbereiches
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 310 | C++98 |
il n'était pas clair si
errno
est une macro
ou un identifiant avec liaison externe |
errno
doit
être une macro |
Voir aussi
|
macros pour les conditions d'erreur standard compatibles POSIX
(macro constante) |
|
|
affiche une chaîne de caractères correspondant à l'erreur courante vers
stderr
(fonction) |
|
|
retourne une version textuelle d'un code d'erreur donné
(fonction) |
|
|
Documentation C
pour
errno
|
|