9

Ich habe Visual Studio so konfiguriert, dass Gleitkommaausnahmen über die _controlfp-Funktion ausgelöst werden. Dies funktioniert für NAN und INF, aber nicht für QNAN. I.e. Quiet NaNs verursachen keine Ausnahme. Gibt es eine Funktion oder eine Konfigurationsoption für Visual Studio 2008/2010, die dazu führt, dass QNANs stattdessen NANs sind, sodass sie Ausnahmen auslösen?Erzwinge, dass alle QNaN normal NaN (SNaN) sind, sodass Ausnahmen ausgelöst werden.

+0

Ich erwarte, dass die Antwort ‚Nein‘ zu sein aber ich bin sehr interessiert. –

+1

eine andere Antwort, die Sie nützlich finden können: http://stackoverflow.com/questions/2769814/how-doi-i-user-try-catch-to-catch-floating-point-errors/2769889#2769889 – George

+0

@George: danke , das war in der Tat nützlich – Dave

Antwort

1

einige hilfreiche Tipps, obwohl ich der Ferne etwas getan nie haben:

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

Die resultierende Suche über das Internet (die ich wirklich nur etwa 30 Sekunden auf verbracht haben) , führt mich zu der Annahme, dass dies normalerweise mit einer Compiler-Option aktiviert ist.

Ich erinnere mich jedoch, dass solche Aktivierung/Deaktivierung von Traps programmgesteuert angegeben werden kann, und insbesondere in Windows kann dies von so ziemlich jedem Programm durchgeführt werden, z. B. wenn ein Drucker zum Drucken verwendet wird. Wenn Sie diese Option programmgesteuert ändern, setzen Sie sie außerdem so bald wie möglich auf den vorherigen Wert zurück, da andernfalls Probleme auftreten, wenn Leute aus .NET versuchen, Ihren Code zu verwenden.

(Mit anderen Worten, die Nutzung von _controlfp durch eine andere Routine außer Kraft gesetzt werden kann, vorausgesetzt, dass in der Tat der richtige Ansatz zu verwenden)

Siehe auch Visual Studio C++ 2008/2010 - break on float NaN

Verwandte Themen