fesetexceptflag
函数(C++11) <cfenv>
int fesetexceptflag (const fexcept_t* flagp, int excepts);
设置浮点异常标志
用flags所指向的对象中存储的状态来设置由exception所指示的异常。
如果成功,该函数将更改浮点环境的当前状态,设置设定的异常标志,但不会实际上引发异常。
调用此函数的程序应确保为调用启用了
FENV_ACCESS。
☲ 参数
flagp
excepts
位掩码:实现支持的任意数量浮点异常值的组合(按位或 OR):
某些库实现可能支持更多的浮点异常值(其对应的宏也以FE_开头)。
C99:
在<fenv.h>中,库可以只定义它们支持的上面的宏值(其他的可能不定义)。
C++11:
至少上面所有的宏值都在<cfenv>中定义(即使实现不支持)。
☉ 返回值
如果函数成功地设置了标志,则为零(或者如果excepts为零)。
否则为非零值。
↭ 数据竞争
每个线程使用自己的状态维护一个单独的浮点环境。生成一个新线程复制当前状态。[这适用于C11和c++ 11实现]
➤ 异常
无抛出:此函数从不抛出异常。
注意,C浮点异常不是c++异常,因此不会被try/catch块捕获。
如果编译指示
FENV_ACCESS关闭,调用这个函数会导致未定义的行为。
🍄 另请参阅