|
|||||||||||
|
Technical Support On-Line Manuals Libraries and Floating Point Support Guide |
Libraries and Floating Point Support GuideException trap handling by signals
NoteThe following functionality requires you to select a floating-point
model that supports exceptions, such as If an exception is trapped but the trap handler address is
set to The default trap handler raises a SIGFPE signal. The default handler for SIGFPE prints an error message and terminates the program. If you trap SIGFPE, you
can declare your signal handler function to have a second parameter that
tells you the type of floating-point exception that occurred. This
feature is provided for compatibility with Microsoft products. The
values are void sigfpe(int sig, int etype){ printf("SIGFPE (%s)\n", etype == _FPE_INVALID ? "Invalid Operation" : etype == _FPE_ZERODIVIDE ? "Divide by Zero" : etype == _FPE_OVERFLOW ? "Overflow" : etype == _FPE_UNDERFLOW ? "Underflow" : etype == _FPE_INEXACT ? "Inexact Result" : "Unknown"); } signal(SIGFPE, (void(*)(int))sigfpe); To generate your own SIGFPE signals
with this extra information, you can call the function
__rt_raise(SIGFPE, _FPE_INVALID);
| ||||||||||
|
|||||||||||