constexpr 说明符 (C23 起)

来自cppreference.com
< c‎ | language


constexpr 存储类说明符声明的标量对象属于常量。必须根据静态初始化规则进行完全且明确的初始化。它仍然有适于其声明的链接,并且在运行时存在,以获取其地址;它只是在运行时不能以任何方式进行修改,即,编译器可以在任何其他常量表达式中运用“对象具有固定值“的知识。

此外,这种常量的初始化式所使用的常量表达式,在编译时进行检查。

浮点类型的初始化式必定在翻译时的浮点环境中进行计算。

可以用 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; // 不会被上方的 fesetround() 影响
    printf("%f\n", h);
}

输出:

0.696969

引用

  • C23 标准(ISO/IEC 9899:2024):
  • TBD TBD (第 TBD 页)

参阅