2011-10-28 8 views
2

私はDelphiでのプログラミングに慣れています。そのシステムでは、ハードウェア浮動小数点例外、例えば、ゼロ除算、オーバーフローなどにより、ネイティブのDelphi例外が発生します。このメカニズムは、ハードウェア例外がマスクされておらず、それらのハードウェア例外がDelphi RTLによってネイティブのDelphi例外に変換されることです。浮動小数点エラーをMSツールでC++例外にすることはできますか?

私のアプリケーションにはプラグインアーキテクチャがあり、多くのクライアントがMS C++コンパイラを使ってプラグインを作成します。クライアントのC++プラグインコードで浮動小数点エラーが発生すると、C++コードからDelphiコードの例外ハンドラにジャンプします。これにより、プラグインの作成者は、C++の例外ではないため、これらの例外をトラップすることはできないので、問題の原因を診断することが困難になります。

C++コンパイラで浮動小数点例外をC++例外に変換するためのオプションがいくつかありますか?または、C++コードの例外をマスクし、手動でエラーをテストする必要がありますか?

また、標準のC++ツールが浮動小数点エラーを無視すると、堅牢な科学的数値コードを書く方法を教えてください。それは眩しい弱点のように見える、または何かが欠けている?

+1

参照http://stackoverflow.com/questions/4747934/c-catch-a-divide-by-zero-errorまたはhttp://stackoverflow.com/questions/4795169/handling-cpu-exceptions-in- C – rve

+0

C++で浮動小数点例外をキャッチする例ここでは(http://www.cplusplus.com/forum/beginner/51694/) –

+0

@LURDこれは浮動小数点数を投げてキャッチします。 FP例外はありません。 –

答えて

3

どの程度this example変換SEH C++の例外に?

+0

ありがとう。 MSaltersと同じリンクが発生します。 –

+0

ええ、実験は長時間かかりましたが、私は彼の姿を見ませんでした。 [Here](http://blogs.msdn.com/b/jaredpar/archive/2008/01/11/mixing-seh-and-c-exceptions.aspx)は、いくつかの詳細です。 –

+0

アレックス;そのリンクをありがとう。約10年前にC++から脱出したデルファイプログラマとして、なぜ私がC++を後にして幸せになったのかを思い出しました。 Grins。 –

2

はい、関連する機能がある_set_se_translator

+0

ありがとうございます。私はそれを読むでしょう。私はSEHについて学ぶ必要があると思う。そしておそらく '_set_se_translator'の戻り値を使ってSEHトランスレータのチェーンを設定しています。また、DLLが戻る前に、以前のトランスレータを復元します。 –

関連する問題