feholdexcept
Сохраняет текущую среду с плавающей запятой в указанном объекте, очищает флаги состояний с плавающей запятой и, если это возможно, переводит среду с плавающей запятой в режим без остановки.
Синтаксис
int feholdexcept(
fenv_t *penv
);
Параметры
penv
Указатель на объект fenv_t
, содержащий копию среды с плавающей запятой.
Возвращаемое значение
Возвращает ноль только в том случае, если функция способна успешно включить непрерывную обработку исключений с плавающей запятой.
Замечания
Функция feholdexcept
используется для сохранения состояния текущей среды с плавающей запятой в объект fenv_t
, на который указывает penv
, и настройки среды таким образом, чтобы при возникновении исключений с плавающей запятой выполнение не прерывалось. Этот режим называется режимом без остановки. Этот режим продолжается до тех пор, пока среда не будет восстановлена с помощью fesetenv
или feupdateenv
.
Эту функцию можно использовать в начале подпрограммы, который должна скрывать от вызывающей стороны одно или несколько исключений с плавающей запятой. Чтобы сообщить об исключении, можно очистить нежелательные исключения с помощью , feclearexcept
а затем завершить режим без остановки вызовом feupdateenv
.
Чтобы использовать эту функцию, необходимо отключить оптимизацию вычислений с плавающей запятой, которая может препятствовать доступу. Для этого следует использовать директиву #pragma fenv_access(on)
перед вызовом. Дополнительные сведения см. в разделе fenv_access
.
Требования
Function | Заголовок C | Заголовок C++ |
---|---|---|
feholdexcept |
<fenv.h> | <cfenv> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
См. также
Справочник по алфавитной функции
feclearexcept
fesetenv
feupdateenv