主要观点:
- 提议将 C 语言中立即用整数常量表达式初始化的非
extern
、const
限定(某些情况下除static
外无其他存储类说明符)整数类型(包括枚举类型)对象声明隐式升级为constexpr
声明,仅在特定条件下生效,如用整数常量表达式初始化等。 - 解释了为何限制为非
extern
声明和整数及类似类型,而非其他类型,如extern
对象声明可能指向外部只读内存,不能标记为真常量。 - 提及之前关于降级实现定义整数常量表达式的论文被否定,应反其道而行之,开始将这些东西视为常量表达式。
- 介绍了为实现该提议所写的论文及其具体内容,包括对各种声明在升级前后
constexpr
状态的示例说明,以及在标准中的具体修改内容。 - 希望能将此简单提议纳入 C 语言,以统一实现中的现有实践,减少警告,并会在 2024 年 10 月左右的 C 会议上推动该提案。
关键信息:
constexpr
可用于 C23 中的对象声明(但非函数)。- 非
extern
声明、整数类型等条件限制。 - 之前论文被否定及反方向提议。
- 标准中关于升级声明的具体修改段落。
重要细节:
- 示例中各种声明在升级前后
constexpr
状态的表格展示。 - 提及 C++在编译时处理几乎所有可处理的东西,而 C 相对保守。
- 介绍相关论文在 RedHat 博客和 LLVM 文档中的链接。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。