matherr() Traps Floating-Point Errors Only in Library

ID: Q22317

5.10 6.00 6.00a 6.00ax 7.00 | 5.10 6.00 6.00a | 1.00 1.50 1.51 1.52

MS-DOS                      | OS/2            | WINDOWS
kbprg kbfasttip

The information in this article applies to:

SUMMARY

The matherr() function in the Microsoft C run-time library does not trap floating-point errors in application code. This function traps floating-point errors generated by functions in the run-time library. For example, when the following sample application generates an arithmetic overflow error, the system matherr() routine displays a message and terminates the program.

MORE INFORMATION

To trap floating-point errors in application code, such as the overflow error above, use the signal() function to process the SIGFPE interrupt.

Sample Code

   #include <math.h>

   int matherr(struct exception *x)
   {
      x->retval = 2;
      return 1;
   }

   void main(void)
   {
      double f;

      f = 2.0;

      while (1)
         f *= f;
   }

REFERENCES

For more information on the signal() function, see the Microsoft C Run-Time Library Reference.

Additional reference words: 1.00 1.50 5.10 6.00 6.00a 6.00ax 7.00 kbinf KBCategory: kbprg kbfasttip KBSubcategory: CRTIss Keywords : kb16bitonly

Last Reviewed: July 18, 1997