8. fenv.h — 浮点环境
提供浮点环境控制。头文件: <fenv.h>。
int feclearexcept(int excepts)
清除浮点异常标志。
- 输入: excepts 异常标志位掩码
- 输出: int 0 成功
int fegetexceptflag(fexcept_t *flagp, int excepts)
获取异常标志。
- 输入: flagp 标志指针(输出), excepts 异常位掩码
- 输出: int 0 成功
int fesetexceptflag(const fexcept_t *flagp, int excepts)
设置异常标志。
- 输入: flagp 标志指针, excepts 异常位掩码
- 输出: int 0 成功
int feraiseexcept(int excepts)
引发浮点异常。
- 输入: excepts 异常位掩码
- 输出: int 0 成功
int fetestexcept(int excepts)
测试异常标志。
- 输入: excepts 异常位掩码
- 输出: int 当前设置的异常位
int fegetenv(fenv_t *envp)
保存浮点环境。
- 输入: envp 环境指针(输出)
- 输出: int 0 成功
int feholdexcept(fenv_t *envp)
保存环境并清除异常。
- 输入: envp 环境指针(输出)
- 输出: int 0 成功
- 注意: 保存当前环境并设置不引发异常
int fesetenv(const fenv_t *envp)
恢复浮点环境。
- 输入: envp 环境指针
- 输出: int 0 成功
- 注意: 传入 FE_DFL_ENV 恢复默认环境
int feupdateenv(const fenv_t *envp)
恢复环境并保留当前异常。
- 输入: envp 环境指针
- 输出: int 0 成功
- 注意: 先恢复环境,再引发当前已发生的异常
int fegetround(void)
获取当前舍入模式。
- 输入: 无
- 输出: int 舍入模式(FE_TONEAREST 等)
- 注意: kf32 不支持(软浮点时始终返回 FE_TONEAREST)
int fesetround(int round)
设置舍入模式。
- 输入: round 舍入模式
- 输出: int 0 成功
- 注意: kf32 不支持(软浮点时非 FE_TONEAREST 返回失败)