constexpr 说明符 (自 C23 起)
来自 cppreference.com
使用 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)
- TBD TBD (p: TBD)
[编辑] 另请参阅
C++ 文档 用于
constexpr 类型说明符 |