如何在MacOSX上设置C ++的双精度?

时间:2010-05-24 21:57:13

标签: c++ macos fpu double-precision

我正在尝试移植_controlfp(_CW_DEFAULT,0xffffffff);从WIN32到Mac OS X / Intel。我完全不知道如何移植这条指令......你呢?谢谢!

2 个答案:

答案 0 :(得分:5)

尝试section 8.6 of Gough's Introduction to GCC,它演示了x86 FLDCW指令。但是如果你告诉我们你为什么需要它会有所帮助 - 如果你想要你的双打是IEEE-754 64位双打,最简单的方法是使用-msse -mfpmath = sse进行编译。

答案 1 :(得分:1)

您控制哪些精密元素?

根据Microsoft's Website

  

_control87函数获取并设置浮点控制字。浮点控制字允许程序改变浮点数学包中的精度,舍入和无穷大模式。您还可以使用_control87屏蔽或取消屏蔽浮点异常。如果mask的值等于0,_control87将获得浮点控制字。如果掩码非零,则设置控制字的新值:对于掩码中的任何位(等于1),new中的相应位用于更新控制字。换句话说,fpcntrl = ((fpcntrl & ~mask) | (new & mask))其中fpcntrl是浮点控制字。

请注意关键字“库”。此功能正在操纵 Microsoft 库,该库可能不存在于Mac上。

我建议如下:

  1. 控制浮点芯片 你自己的Mac
  2. 或者使用Microsoft编译器进行Mac
  3. 或者找一个移动方法 浮点控件更多 你计划中的通用点。
  4. 我能给出的最好建议是尽可能多地将代码与标准和平台或库特定问题保持一致。对于涉及平台特定功能的那些功能,请将它们移动到自己的源文件/翻译单元中。创建这些功能的副本,每个平台一个。让链接器决定使用哪些。

    祝你好运。