该头文件
引入 C 标准库头文件 <fenv.h>,并将相关标识符加入 std 命名空间。
1 说明
语法:
#include <cfenv>
备注:
包含该头文件,可以保证 C 标准库头文件中具有外部链接的名称会在 std 命名空间中进行声明。
常量与类型:
#define FE_ALL_EXCEPT see below //全部浮点异常集合 #define FE_DIVBYZERO see below //除零异常 #define FE_INEXACT see below //结果不精确(发生舍入) #define FE_INVALID see below //无效运算(如 sqrt(-1)) #define FE_OVERFLOW see below //浮点上溢 #define FE_UNDERFLOW see below //浮点下溢 #define FE_DOWNWARD see below //向负无穷舍入 #define FE_TONEAREST see below //向最近值舍入(默认模式) #define FE_TOWARDZERO see below //零舍入 #define FE_UPWARD see below //向正无穷舍入 #define FE_DFL_ENV see below //默认浮点环境 namespace std{ using fenv_t = object type; //保存完整浮点环境(舍入模式+异常标志)的对象类型 using fexcept_t = integer type; //保存浮点异常状态标志的整数类型 }
2 接口
int feclearexcept(int except); //清除指定的浮点异常标志
int fegetexceptflag(fexcept_t* pflag, int except); //将异常标志状态保存到 fexcept_t
int feraiseexcept(int except); //手动触发指定浮点异常
int fesetexceptflag(const fexcept_t* pflag, int except); //恢复已保存的异常标志
int fetestexcept(int except); //测试指定异常标志是否被置位
int fegetround(); //获取当前浮点舍入模式
int fesetround(int mode); //设置浮点舍入模式
int fegetenv(fenv_t* penv); //获取当前完整浮点环境
int feholdexcept(fenv_t*penv); //保存环境、清除异常、屏蔽浮点陷阱
int fesetenv(const fenv_t* penv); //恢复保存的浮点环境
int feupdateenv(const fenv_t* penv); //恢复环境并重新抛出旧的异常标志
💡使用提示:
- 该套 API 操作 IEEE754 浮点状态标志与舍入模式,依赖硬件支持;
- 编译器优化可能消除浮点运算,干扰异常标志检测。
本文介绍C++标准库中<cfenv>头文件的功能与使用,该头文件用于访问和控制IEEE 754浮点环境,包括浮点异常标志、舍入模式等。其接口依赖硬件支持,且编译器优化可能影响异常检测的可靠性。内容涵盖标准声明规则、关键常量类型及实际使用注意事项。

529

被折叠的 条评论
为什么被折叠?



