Я хотел бы обработать исключение fpu в окнах, например:
#include <math.h>
#include <fenv.h>
#include <stdio.h>
int main()
{
double b = 0;
int raised;
feclearexcept (FE_ALL_EXCEPT);
b /= 0;
raised = fetestexcept (FE_OVERFLOW | FE_INVALID);
if (raised & FE_OVERFLOW) { printf("over\n");}
if (raised & FE_INVALID) { printf("invalid\n");}
return 0;
}
Но на окна. Я пытался читать MSDN, но документ совсем не ясен. Я хочу сделать это с помощью компиляторов Visual Studio как на архитектуре x86, так и на архитектуре amd64.
Меня не интересует перевод исключения на C++ - на самом деле, меня даже не интересует исключение FPU, только знание состояния FPU после некоторых вычислений, как в примере выше.
== редактировать ==
Хорошо, похоже, что на самом деле все намного проще: достаточно использовать _clearfp:
#include <math.h>
#include <float.h>
#include <stdio.h>
int main()
{
double b = 0;
int raised;
raised = _clearfp();
b /= 0;
raised = _clearfp();
if (raised & SW_INVALID) { printf("invalid\n");}
return 0;
}
Гораздо лучше, чем иметь дело с исключениями, SEH и другими непереносимыми вещами :)