Поделиться через


fesetexceptflag

Задает указанные флаги состояний с плавающей запятой в текущей среде вычислений с плавающей запятой.

Синтаксис

int fesetexceptflag(
     const fexcept_t *pstatus,
     int excepts
);

Параметры

pstatus
Указатель на fexcept_t объект, содержащий значения для задания флагов состояния исключения. Объект может быть задан предыдущим вызовом fegetexceptflag.

excepts
Флаги состояний исключения с плавающей запятой, которые требуется задать.

Возвращаемое значение

Если успешно заданы все указанные флаги состояний исключения, возвращает 0. В противном случае возвращается ненулевое значение.

Замечания

Функция fesetexceptflag присваивает состоянию флагов состояний исключения с плавающей запятой, заданных с помощью excepts, соответствующие значения объекта fexcept_t, на который указывает pstatus. Это не вызывает исключений. Указатель pstatus должен указывать на допустимый объект fexcept_t. В противном случае последующее поведение функции будет неопределенным. Функция fesetexceptflag поддерживает эти значения макросов исключений в , определенных в excepts<fenv.h>:

Макрос исключения Description
FE_DIVBYZERO При выполнении предыдущей операции с плавающей запятой произошла ошибка сингулярности или полюса, в результате чего было получено бесконечное значение.
FE_INEXACT Функция принудительно округлила сохраненный результат ранее выполненной операции с плавающей запятой.
FE_INVALID Ошибка домена в ранее выполненной операции с плавающей запятой.
FE_OVERFLOW Ошибка диапазона. Ранее выполненная операция с плавающей запятой возвратила слишком большое значение, которое не удается представить.
FE_UNDERFLOW Ранее выполненная операция с плавающей запятой возвратила слишком малое значение, которое не удается представить с полной точностью. Создано денормализованное значение.
FE_ALL_EXCEPT Побитовая операция ИЛИ для всех поддерживаемых исключений с плавающей запятой.

Аргумент excepts может быть равен нулю. Кроме того, он может определяться с помощью поддерживаемого макроса исключения с плавающей запятой, а также побитовой операции ИЛИ для нескольких макросов. Действие любого другого значения аргумента не определено.

Чтобы использовать эту функцию, необходимо отключить оптимизацию вычислений с плавающей запятой, которая может препятствовать доступу. Для этого следует использовать директиву #pragma fenv_access(on) перед вызовом. Дополнительные сведения см. в разделе fenv_access.

Требования

Function Заголовок C Заголовок C++
fesetexceptflag <fenv.h> <cfenv>

Дополнительные сведения о совместимости см. в разделе Совместимость.

См. также

Справочник по алфавитной функции
fegetexceptflag