![]()  | 
![]()  | 
![]()  | 
![]()  | 
![]()  | 
This version of this document is no longer maintained. For the latest documentation, see http://www.qnx.com/developers/docs. | 
Get or set the current exception mask
#include <fpstatus.h>
int fp_exception_mask ( int new_mask,
                        int set );
libm
Use the -l m option to qcc to link against this library.
The fp_exception_mask() function gets or sets the current exception mask, depending on the value of the set argument.
![]()  | 
This function doesn't return a special value to indicate that an error occurred. If you want to check for errors, set errno to 0, call the function, and then check errno again. | 
#include <fpstatus.h>
int main(int argc, char** argv) 
{
   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);
}
| Safety: | |
|---|---|
| Cancellation point | No | 
| Interrupt handler | No | 
| Signal handler | No | 
| Thread | Yes | 
fp_exception_value(), fp_precision(), fp_rounding()
![]()  | 
![]()  | 
![]()  | 
![]()  |