Home C&C++函数库 c++ 语法 程序源码 Linux C库

fesetexceptflag

函数(C++11)   <cfenv>


int fesetexceptflag (const fexcept_t* flagp, int excepts);

设置浮点异常标志

用flags所指向的对象中存储的状态来设置由exception所指示的异常。

如果成功,该函数将更改浮点环境的当前状态,设置设定的异常标志,但不会实际上引发异常。

调用此函数的程序应确保为调用启用了FENV_ACCESS

☲  参数


flagp

指向存储标志的fexcept_t对象的指针。 flagp指向的值必须已经通过调用fegetexceptflag设置过,至少包含由 excepts指定的异常。

excepts

位掩码:实现支持的任意数量浮点异常值的组合(按位或 OR):

宏值 说明
FE_DIVBYZERO 极点错误: 如 :零做除数,或其他一些渐近无限的结果(有限的参数)。
FE_INEXACT 不精确:结果不精确。
FE_INVALID 域错误:至少有一个参数是函数未定义的值。
FE_OVERFLOW 溢出范围错误:结果的值太大,无法用返回类型的值表示。
FE_UNDERFLOW 下溢出范围误差:结果的值太小,不能用返回类型的值表示。
FE_ALL_EXCEPT 所有异常(选择实现支持的所有异常)。

某些库实现可能支持更多的浮点异常值(其对应的宏也以FE_开头)。

C99:
在<fenv.h>中,库可以只定义它们支持的上面的宏值(其他的可能不定义)。

C++11:
至少上面所有的宏值都在<cfenv>中定义(即使实现不支持)。

☉  返回值



如果函数成功地设置了标志,则为零(或者如果excepts为零)。 否则为非零值。

↭  数据竞争



每个线程使用自己的状态维护一个单独的浮点环境。生成一个新线程复制当前状态。[这适用于C11和c++ 11实现]


➤  异常



无抛出:此函数从不抛出异常。 注意,C浮点异常不是c++异常,因此不会被try/catch块捕获。 如果编译指示FENV_ACCESS关闭,调用这个函数会导致未定义的行为。

🍄  另请参阅



fegetexceptflag 获取浮点异常标志(function )
feraiseexcept 触发浮点异常(function )


联系我们 免责声明 关于CandCplus 网站地图