constexpr 说明符 (C23 起)
来自 cppreference.cn
用 constexpr
存储类说明符声明的标量对象是常量。它必须根据静态初始化规则完全且显式地初始化。它仍然具有与其声明相适应的链接,并且在运行时存在以获取其地址;它只是不能在运行时以任何方式修改,即编译器可以在任何其他常量表达式中使用其对对象固定值的了解。
此外,用于此类常量初始化器的常量表达式会在编译时进行检查。
浮点类型的初始化器必须在转换时浮点环境中求值。
对于可以用 constexpr
声明的对象类型有一些限制。即,以下构造不允许为 constexpr
目录 |
[编辑] 关键词
[编辑] 注释
[编辑] 示例
运行此代码
#include <fenv.h> #include <stdio.h> int main(void) { constexpr float f = 23.0f; constexpr float g = 33.0f; fesetround(FE_TOWARDZERO); constexpr float h = f / g; // is not affected by fesetround() above printf("%f\n", h); }
输出
0.696969
[编辑] 参考
- C23 标准 (ISO/IEC 9899:2024)
- 待定 待定 (p: 待定)
[编辑] 另请参阅
C++ 文档,关于
constexpr 类型说明符 |