9

He configurado Visual Studio para lanzar excepciones de coma flotante a través de la función _controlfp. Esto funciona para NAN e INF, pero no para QNAN. Es decir. Los NaN silenciosos no provocan una excepción. ¿Hay alguna función, o opción de configuración para Visual Studio 2008/2010, que obligue a los QNAN a ser NAN, para que generen excepciones?Fuerza a todos QNaN para que sea NaN (SNaN) normal, por lo que se lanzan excepciones

+0

espero que la respuesta sea 'no' pero estoy muy interesado –

+1

Otra respuesta que puede serle útil: http://stackoverflow.com/questions/2769814/how-do-i-use-try-catch-to-catch-floating-point-errors/2769889#2769889 – George

+0

@George: gracias , eso fue realmente útil – Dave

Respuesta

1

Algunos consejos útiles, aunque nunca he hecho ni siquiera remotamente algo como esto:

Leer: http://www.cisl.ucar.edu/docs/trap.error/errortypes.html

La búsqueda resultante en el Internet (que realmente he sólo pasamos unos 30 segundos en) , me lleva a creer que esto normalmente está habilitado con una opción de compilación.

Sin embargo, también parece recordar que dicha habilitación/inhabilitación de capturas puede especificarse programáticamente, y especialmente en Windows, esto se puede hacer prácticamente con cualquier programa, como cuando se utiliza una impresora para imprimir. Además, si cambia esta opción mediante programación, vuelva a establecer el valor anterior tan pronto como sea posible; de ​​lo contrario, si las personas de .NET intentan usar su código, es posible que tengan problemas.

(En otras palabras, el uso de _controlfp podría ser anulado por alguna otra rutina, suponiendo que es de hecho el enfoque correcto a utilizar)

Véase también Visual Studio C++ 2008/2010 - break on float NaN

Cuestiones relacionadas