代码之家  ›  专栏  ›  技术社区  ›  user12345

为什么以及何时应调用_fpreset()?

  •  4
  • user12345  · 技术社区  · 16 年前

    我能找到的唯一文档(在msdn或其他方面)是 _fpreset() 重置浮点包。“什么是浮点包?”这是否也清除了FPU状态字?我看到文件上写着 FPX() 当从SIGFPE恢复时,但没有 _clearfp() 也这么做?我需要两个都打吗?

    我正在开发一个应用程序,该应用程序可以取消显示某些FP异常(使用 _controlfp() )当我想将FPU重置为默认状态时(例如,调用.NET代码时),我应该调用 “清除”() , FPX() 二者都 . 这是性能关键的代码,因此如果不需要调用这两个代码,我不想同时调用…

    1 回复  |  直到 16 年前
        1
  •  3
  •   F'x    16 年前

    _fpreset() 重置浮点单位的状态。它将FPU精度重置为默认值 清除FPU状态字。我看到使用它的两种情况是从FPE恢复时(如您所说),以及从以任何方式拧紧了FPU的库代码(如您无法控制的DLL)获取控制权时,例如更改精度。