我正在将一些 BSD 代码移植到 CentOS,我发现代码中使用了 ieeefp.h 中的标准函数 fpsetmask()。
我还不知道这个函数的行为,但是否有一个 linux 等价物?或者我应该创建一些在 linux 上模拟它的东西吗?
最佳答案
我认为 feraiseexcept() 函数是等效的——有关详细信息,请参阅 its manpage 的“异常处理”小节.
根据 the fpsetmask() manpage ,各个标志的映射如下:
- FP_X_INV → FE_INVALID
- FP_X_DZ → FE_DIVBYZERO
- FP_X_OFL → FE_OVERFLOW
- FP_X_UFL → FE_UNDERFLOW
- FP_X_IMP → FE_INEXACT
- FP_X_IOV → 无,也可能是 FE_OVERFLOW
请记住,这可能仅限于 x87。
关于linux - 是否有 fpsetmask() 的 linux 等价物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18585644/