Je voudrais gérer exception FPU sur les fenêtres, quelque chose comme:Manipulation exception FPU sur les fenêtres
#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;
}
Mais sur les fenêtres. J'ai essayé de lire le MSDN, mais le document n'est pas clair du tout. Je veux le faire avec les compilateurs Visual Studio, sur les architectures x86 et amd64.
Je ne suis pas intéressé par la traduction de l'exception en C++ - en fait, je ne suis même pas intéressé par l'exception FPU, seulement en connaissant l'état FPU après un calcul, comme l'exemple ci-dessus.
modifier == ==
Ok, on dirait qu'il est en fait beaucoup plus simple: en utilisant _clearfp suffit:
#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;
}
beaucoup mieux que de traiter avec des exceptions, SEH et d'autres choses non portable:
Works dans G ++ sous Windows, semble être une erreur de compilation. – schnaader
Oui, gérer "sur Windows" n'est pas précis: je voulais dire avec Visual Studio. –