9

J'ai configuré Visual Studio pour lancer des exceptions à virgule flottante via la fonction _controlfp. Cela fonctionne pour NAN et INF, mais pas QNAN. C'est à dire. Les NaN silencieux ne provoquent pas d'exception. Existe-t-il une fonction, ou une option de configuration pour Visual Studio 2008/2010, qui forcera les QNAN à être à la place des NAN, afin qu'ils lancent des exceptions?Force tout QNaN à être à la place normal NaN (SNaN) si des exceptions sont levées

+0

Je me attends la réponse soit « non » mais je suis très intéressé. –

+1

une autre réponse vous pouvez trouver utile: http://stackoverflow.com/questions/2769814/how-do-i-use-try-catch-to-catch-floating-point-errors/2769889#2769889 – George

+0

@George: merci , c'était effectivement utile – Dave

Répondre

1

Quelques conseils utiles, bien que je ne l'ai jamais fait à distance quelque chose comme ceci:

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

La recherche résultant sur Internet (que j'ai vraiment passé seulement environ 30 secondes) , me conduit à croire que cela est normalement activé avec une option de compilateur. Cependant, je pense aussi que cette activation/désactivation des interruptions peut être spécifiée par programme, et en particulier dans Windows, cela peut être fait par pratiquement n'importe quel programme, comme lorsqu'une imprimante est utilisée pour l'impression. En outre, si vous modifiez cette option par programme, redéfinissez-la à la valeur précédente dès que vous le pouvez, sinon, si les utilisateurs de .NET essaient d'utiliser votre code, ils peuvent avoir des problèmes.

(En d'autres termes, votre utilisation de _controlfp pourrait être outrepassée par une autre routine, en supposant que est en effet l'approche à utiliser)

Voir aussi Visual Studio C++ 2008/2010 - break on float NaN

Questions connexes