matherr() Traps Floating-Point Errors Only in Library

Last reviewed: July 17, 1997
Article 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:

  • The C Run-time (CRT), included with:

        - Microsoft C for MS-DOS, versions 5.1, 6.0, 6.0a, and 6.0ax
        - Microsoft C for OS/2, versions 5.1, 6.0, and 6.0a
        - Microsoft C/C++ for MS-DOS, version 7.0
        - Microsoft Visual C++ for Windows, versions 1.0, 1.5, 1.51, and 1.52
    

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


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: July 17, 1997
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.