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> |
Дополнительные сведения о совместимости см. в разделе Совместимость.