我习惯用Delphi编程。在该系统中,硬件浮点异常,例如,除零,溢出等导致引发本机Delphi异常。机制是硬件异常没有被屏蔽,Delphi RTL将这些硬件异常转换为本机Delphi异常。
我的应用程序有一个插件架构,我的许多客户使用MS C ++编译器编写插件。当客户端的C ++插件代码中出现浮点错误时,这会跳出C ++代码并进入我的Delphi代码中的异常处理程序。这使得插件作者很难诊断代码中问题所在的位置,因为据我所知,他们不能捕获这些异常,因为它们不是C ++异常。
有什么方法可以在C ++代码中设置一些选项,使C ++编译器将浮点异常转换为C ++异常?或者我是否必须屏蔽C ++代码中的异常并手动测试错误?
另外,如果标准C ++工具忽略浮点错误,那么如何编写健壮的科学和数字代码呢?这似乎是一个明显的弱点,或者我错过了什么?