背景:
许多年前,我继承了一个代码库,它使用 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 g++' 中唯一相关的参数似乎是用于打开优化选项。(例如 -funsafe-math-optimizations)。但是,我不认为我在打开任何东西,我只是想关闭相关的优化。
我尝试过发布和调试版本,VC++ 为发布和调试提供了相同的结果,而 g++ 为发布和调试提供了相同的结果,但我无法让 g++ 版本给出与 VC++ 版本相同的结果。