Пространства имён
Варианты
Действия

errno

Материал из cppreference.com
< cpp‎ | error
 
 
Библиотека диагностики
Обработка исключений
Сбои обработки исключений
(до C++17*)
(до C++17*)
(C++11)(до C++17*)    
(до C++17*)
Коды ошибок
Коды ошибок
errno
Категории исключений
(ТС TM)
Поддержка системных ошибок
(C++11)
(C++11)
Утверждения
Трассировка стека
 
Определено в заголовочном файле <cerrno>
#define errno /* определено-реализацией */

errno это макрос препроцессора, используемый для индикации ошибок. Он расширяется до static(до C++11)локального к потоку(начиная с C++11) изменяемого левостороннего значения типа int.

Некоторые стандартные библиотечные функции указывают на ошибки, записывая положительные целые числа в errno. Как правило, значение errno устанавливается равным одному из кодов ошибок, перечисленных в <cerrno> как макроконстанты, которые начинаются с буквы E, за которой следуют буквы в верхнем регистре или цифры.

При запуске программы значение errno равно 0, и хотя библиотечные функции могут записывать положительные целые числа в errno вне зависимости от того, произошла ошибка или нет, библиотечные функции никогда не сохраняют 0 в errno.

[править]Пример

#include <cerrno>#include <clocale>#include <cmath>#include <cstring>#include <iostream>   int main(){constdouble not_a_number =std::log(-1.0);std::cout<< not_a_number <<'\n';   if(errno==EDOM){std::cout<<"Сбой log(-1): "<<std::strerror(errno)<<'\n';std::setlocale(LC_MESSAGES, "de_DE.utf8");std::cout<<"Или, на Немецком, "<<std::strerror(errno)<<'\n';}}

Возможный вывод:

nan Сбой log(-1): Numerical argument out of domain Или, на Немецком, Das numerische Argument ist ausserhalb des Definitionsbereiches

[править]Отчёты о дефектах

Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:

Номер Применён Поведение в стандарте Корректное поведение
LWG 310 C++98 было неясно, является ли errno макросом или идентификатором
с внешним связыванием
errno должен быть макросом

[править]Смотрите также

макросы для стандартных состояний ошибок, совместимых с POSIX
(макроконстанта)[править]
выводит строку символов, соответствующую текущей ошибке, в stderr
(функция)[править]
возвращает текстовую версию данного кода ошибки
(функция)[править]
close