fp_exception_mask()

Получить или установить текущую маску исключения

Прототип:

#include <fpstatus.h>
int fp_exception_mask( int new_mask,
int set );

Аргументы:

new_mask
Новая применяемая маска со следующими битами:
_FP_EXC_INVALID
_FP_EXC_DIVZERO
_FP_EXC_OVERFLOW
_FP_EXC_UNDERFLOW
_FP_EXC_INEXACT
_FP_EXC_DENORMAL
set
Значение, указывающее что требуется выполнить функции:

Библиотека:

libm

Описание:

Функция fp_exception_mask() получает либо устанавливает текущую маску исключений, в зависимости от значения аргумента set.

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

set<0
Текущая маска исключений.
set≥0
Предыдущая маска исключений.


Note: Данная функция не возвращает специальное значение для того, чтобы установить, произошла ли ошибка. Если вам необходимо проверить, возникла ли ошибка, установите errno в 0, вызовите функцию, и затем снова проверьте errno.

Примеры:

#include <fpstatus.h>
int main( void )
{
int ret;
if ( (ret = fp_exception_mask( 0, -1 )) < 0 )
printf( "*** Problem retrieving exceptions \n" );
printf( "Exceptions Enabled: \n\t" );
if ( ret & _FP_EXC_INEXACT )
printf( "Inexact " );
if ( ret & _FP_EXC_DIVZERO )
printf( "DivZero " );
if ( ret & _FP_EXC_UNDERFLOW )
printf( "Underflow " );
if ( ret & _FP_EXC_OVERFLOW )
printf( "Overflow " );
if ( ret & _FP_EXC_INVALID )
printf( "Invalid " );
printf( "\n" );
/* Set the exception mask to enable division by zero errors */
if ( (ret = fp_exception_mask( _FP_EXC_DIVZERO, 1 )) < 0 )
printf( "*** Problem setting exceptions \n" );
if ( (ret = fp_exception_mask( 0, -1 )) < 0 )
printf( "*** Problem retrieving exceptions \n" );
printf( "Exceptions Enabled: \n\t" );
if ( ret & _FP_EXC_INEXACT )
printf( "Inexact " );
if ( ret & _FP_EXC_DIVZERO )
printf( "DivZero " );
if ( ret & _FP_EXC_UNDERFLOW )
printf( "Underflow " );
if ( ret & _FP_EXC_OVERFLOW )
printf( "Overflow " );
if ( ret & _FP_EXC_INVALID )
printf( "Invalid " );
printf( "\n" );
return (0);
}

Классификация:

ЗОСРВ «Нейтрино»

Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

Тематические ссылки:

fp_exception_value(), fp_precision(), fp_rounding(), fp_setenv()




Предыдущий раздел: Описание API математической библиотеки