Предположим, что вы реализуете библиотеку, и вы ничего не знаете о том, что ваши вызывающие могут сделать в среде с плавающей запятой перед вызовом вашего кода. Они могут снять маску исключения и установить пользовательский обработчик прерываний, который приводит к делению на ноль для получения значения 42. Предположим, что ваша библиотека зависит от поведения по умолчанию IEEE-754 для деления на ноль. Функция feholdexcept
дает вам возможность применить это поведение. Окружение вызывающего абонента с его немаскированным исключением можно затем восстановить с помощью функции fesetenv
.
Это, по общему признанию, довольно туманный случай использования, но, честно говоря, все в fenv.h
довольно неясно большинству программистов.