Получить или установить текущую маску исключения
#include <fpstatus.h>int fp_exception_mask( int new_mask,int set );
libm
Функция fp_exception_mask() получает либо устанавливает текущую маску исключений, в зависимости от значения аргумента set.
Данная функция не возвращает специальное значение для того, чтобы установить, произошла ли ошибка. Если вам необходимо проверить, возникла ли ошибка, установите 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 математической библиотеки