在Linux中,是否存在类似于_clearfp()和_statusfp()的函数?

Cha*_*les 4 linux porting visual-c++

最近,我正在做一个关于移植的工作.我遇到了这样一个问题:有些Windows API,如_clearfp(),_ statusfp()等,那么我在Linux中找不到相应的功能.

所以我来这里寻求帮助.

jxh*_*jxh 5

您需要POSIX系统或支持C99标准附录F的C99编译器.您可以通过检查宏__STDC_IEC_559__是否已定义来测试是否支持附件F. 相关功能可以在<fenv.h>.

int feclearexcept(int excepts); // clears exceptions (returns 0 on success)
int fetestexcept(int excepts);  // returns exceptions that are set
Run Code Online (Sandbox Code Playgroud)

传入的异常excepts和返回的fetestexcept是一个可以针对以下宏进行测试的位掩码:

FE_DIVBYZERO
FE_INEXACT
FE_INVALID
FE_OVERFLOW
FE_UNDERFLOW
FE_ALL_EXCEPT
Run Code Online (Sandbox Code Playgroud)

最后一个宏,FE_ALL_EXCEPT就是它上面的所有宏的按位或者.