![]() |
Hi.
I have a realativly simple question: is it possible to trap errors in DJGPP after they occur? What I mean is if something like an FPE occurs, is it possible to have DJGPP run a function which attempts to correct the problem? This is probably a really stupid question, but thanks for your help. |
![]() |
Yes, you can.
volatile int merr=0; static unsigned int fpcw; void math_handler(int sig){ fpcw = _clear87() & 0xff; printf("SIGFPE: %x\n",fpcw); merr = fpcw; } |
int main(int argc, char **argv){ double foo,bar; signal(SIGFPE,math_handler); foo=0.; bar = 1.; bar = bar/foo; return 0; }You also may want to include _fdlib_version = _SVID_; _control87(EM_UNDERFLOW, ~EM_UNDERFLOW); _control87(EM_INEXACT, ~EM_INEXACT);and define your own int matherr(struct exception *e) to correct errors... |