背景:
很多年前,我继承了一个代码库,其中某个计算密集型的库使用Visual Studio(VC++)标志'/fp:fast'来生成更快的代码。不幸的是,'/fp:fast'生成的结果与另一个编译器(Borland C++)下相同库的结果略有不同。由于我们需要产生完全相同的结果,因此我切换到了'/fp:precise',这是可以正常工作的,自那以后一切都非常顺利。但是,现在我正在使用uBuntu Linux 10.04上的g ++编译相同的库,我看到类似的行为,并且我想知道它是否可能有类似的根本原因。我的g ++构建的数字结果与我的VC ++构建的数字结果略有不同。这就带来了我的问题:
问题:
g ++是否具有等效或类似于VC ++中‘fp:fast’和‘fp:precise’选项的参数?(它们是什么?我想激活等效的‘fp:precise’选项。)
更详细的信息:
我使用'make'进行编译,它调用g ++。据我所知(make文件有点晦涩,而且不是我编写的),唯一添加到g ++调用中的参数是“常规”参数(包括文件夹和编译的文件)以及-fPIC(我不确定此开关的作用,我在'man'页面上看不到它)。
‘man g++’中唯一相关的参数似乎是打开优化选项的参数。(例如-funsafe-math-optimizations)。但是,我认为我没有打开任何东西,我只想关闭相关的优化。
我尝试了发布和调试版本,VC++的发布版本和调试版本给出相同的结果,而g ++的发布版本和调试版本也给出相同的结果,但是我无法让g ++版本给出与VC ++版本相同的结果。