feholdexcept等有什么用?

R..*_*R.. 14 c floating-point signals exception fenv

所有文档(在标准中)都fenv.h相当混乱,但我对feholdexcept浮点异常的"不停模式"的概念特别困惑.据我所知,在任何IEEE浮点实现中,默认情况下异常都是非信令/"不停止",并且fenv.h接口似乎无法启用信令模式,除非它是默认模式.feholdexcept除非在非IEEE系统或具有非标准扩展的系统上设置信令异常掩码,否则整个概念是无用的?

Ste*_*non 6

假设您正在实现一个库,并且在调用代码之前,您不知道调用者可能在浮点环境中执行的操作.它们可能会取消屏蔽异常,并安装自定义陷阱处理程序,该处理程序会导致除零以生成值42.假设您的库依赖于具有默认的IEEE-754行为的除零.该feholdexcept函数为您提供了强制执行此行为的方法.然后可以使用该fesetenv函数恢复调用者的环境以及未屏蔽的异常.

这无疑是一个相当模糊的使用角落,但坦率地说,对大多数程序员而言,所有内容fenv.h都相当模糊.