Макрос errno

Заголовочный файл:

Название Язык
errno.h С
cerrno С++

Макрос errno возвращает последний номер ошибки. Этот макрос заменяется на модифицируемое значение типа int, поэтому errno может изменять ход работы программы.

При запуске программы errno инициализируется нулем. Некоторые функции стандартной Си-библиотеки могут изменить его значение на значение отличное от нуля, чтобы сигнализировать о возникновении  ошибок. Вы также можете изменить значение errno или обнулить его, на ваше усмотрение.

В этом же заголовочном файле <cerrno> определены также, по крайней мере, следующие две константы со значениями отличными от нуля:

Константа Описание
EDOM
Ошибка области допустимых значений:

Некоторые математические функции работают только с определенными значениями, которые называют своей областью допустимых значений. Например, квадратный корень вычисляется только для неотрицательных чисел, поэтому функция sqrt устанавливает макрос ERRNO в EDOM, если вызывается с отрицательным аргументом.

ERANGE
Ошибка диапазона значений:

Диапазон значений, которые могут быть представлены типами данных, ограничен. Например, математические функции, такие как pow, могут с легкостью вернуть значение, которое не поместится  ни в одном типе данных.  В этих случаях, ERRNO устанавливается в ERANGE.

В C++, ошибка всегда объявляется как макрос.

Пример: исходный код программы

// пример использования функции assert
#include <iostream>                                   // для оператора cout
#include <cerrno>                                     // для макроса errno
#include <cmath>                                      // для функции sqrt

int main()
{
    sqrt(-1);
    std::cout << "EDOM = " << EDOM 
              << "nerrno = " << errno << std::endl;
    if (errno == EDOM)                                // если значения макросов errno и EDOM равны
        std::cout << "Ошибка области допустимых значенийn";
  return 0;
}

Результат работы программы

CppStudio.com
EDOM = 33
errno = 33
Ошибка области допустимых значений
Автор: admin
Дата: 06.09.2012
Поделиться:

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.