cplusplus
.com
教程
参考
文章
论坛
C++
教程
参考
文章
论坛
参考
C 库
<cassert> (assert.h)
<cctype> (ctype.h)
<cerrno> (errno.h)
C++11
<cfenv> (fenv.h)
<cfloat> (float.h)
C++11
<cinttypes> (inttypes.h)
<ciso646> (iso646.h)
<climits> (limits.h)
<clocale> (locale.h)
<cmath> (math.h)
<csetjmp> (setjmp.h)
<csignal> (signal.h)
<cstdarg> (stdarg.h)
C++11
<cstdbool> (stdbool.h)
<cstddef> (stddef.h)
C++11
<cstdint> (stdint.h)
<cstdio> (stdio.h)
<cstdlib> (stdlib.h)
<cstring> (string.h)
C++11
<ctgmath> (tgmath.h)
<ctime> (time.h)
C++11
<cuchar> (uchar.h)
<cwchar> (wchar.h)
<cwctype> (wctype.h)
容器
C++11
<array>
<deque>
C++11
<forward_list>
<list>
<map>
<queue>
<set>
<stack>
C++11
<unordered_map>
C++11
<unordered_set>
<vector>
输入/输出
<fstream>
<iomanip>
<ios>
<iosfwd>
<iostream>
<istream>
<ostream>
<sstream>
<streambuf>
多线程
C++11
<atomic>
C++11
<condition_variable>
C++11
<future>
C++11
<mutex>
C++11
<thread>
其他
<algorithm>
<bitset>
C++11
<chrono>
C++11
<codecvt>
<complex>
<exception>
<functional>
C++11
<initializer_list>
<iterator>
<limits>
<locale>
<memory>
<new>
<numeric>
C++11
<random>
C++11
<ratio>
C++11
<regex>
<stdexcept>
<string>
C++11
<system_error>
C++11
<tuple>
C++11
<type_traits>
C++11
<typeindex>
<typeinfo>
<utility>
<valarray>
<cfenv> (fenv.h)
函数
C++11
feclearexcept
C++11
fegetenv
C++11
fegetexceptflag
C++11
fegetround
C++11
feholdexcept
C++11
feraiseexcept
C++11
fesetenv
C++11
fesetexceptflag
C++11
fesetround
C++11
fetestexcept
C++11
feupdateenv
类型
C++11
fenv_t
C++11
fexcept_t
pragma
C++11
FENV_ACCESS
宏常量
C++11
FE_ALL_EXCEPT
C++11
FE_DFL_ENV
C++11
FE_DIVBYZERO
C++11
FE_DOWNWARD
C++11
FE_INEXACT
C++11
FE_INVALID
C++11
FE_OVERFLOW
C++11
FE_TONEAREST
C++11
FE_TOWARDZERO
C++11
FE_UNDERFLOW
C++11
FE_UPWARD
参考
<cfenv>
FENV_ACCESS
pragma
<cfenv>
FENV_ACCESS
on (1)
#pragma STDC FENV_ACCESS on
off (2)
#pragma STDC FENV_ACCESS off
访问浮点数环境
如果设置为
on
,程序会通知编译器它可能访问
浮点数环境
来测试其
状态标志
(异常)或在默认以外的
控制模式
下运行。
如果设置为
off
,编译器可以执行某些可能破坏这些测试和模式更改的优化,因此在这种情况下访问
浮点数环境
会导致
未定义行为
。
此 pragma 指令的默认状态是
on
还是
off
取决于编译器设置和库实现。
pragma 指令声明应该出现在
任何外部声明之外:
其效果会一直持续到遇到另一个
FENV_ACCESS
pragma 指令,或者直到
翻译单元
结束。
在复合语句内部:
这种情况下,它应该出现在所有显式声明和语句之前。其效果会一直持续到遇到另一个
FENV_ACCESS
pragma 指令(例如在嵌套的复合语句中),或者直到复合语句结束。在复合语句之后,pragma 指令的状态会恢复到进入复合语句之前的状态。
如果此 pragma 指令出现在其他上下文中,则行为是未定义的。
当通过此 pragma 指令更改状态时,
浮点数控制模式
(例如
舍入方向
)会恢复到其默认设置,但
浮点数状态标志
的状态是不确定的。
另见
fegetenv
获取浮点环境
(函数)
fesetenv
设置浮点环境
(函数)