命名空间
变体
操作

ATOMIC_VAR_INIT

来自 cppreference.com
< c‎ | atomic
定义在头文件 <stdatomic.h>
#define ATOMIC_VAR_INIT(value) /* unspecified */
(自 C11 起)
(在 C17 中已弃用)
(在 C23 中已删除)

展开为一个表达式,该表达式可用于初始化与 value 类型相同的原子变量。

未显式初始化的自动存储持续时间的原子对象的初始值是不确定的。但是,静态和线程本地变量的默认(零)初始化会生成有效的值。

初始化原子变量时,任何并发访问(即使通过原子操作)都是数据竞争(如果地址立即通过 memory_order_relaxed 操作传递给另一个线程,则可能会发生这种情况)。

内容

[编辑] 注释

此宏是 C11 原子类型早期草案设计的一部分。它在 C11 中不需要,并且在 C17 中已弃用,并在 C23 中已删除。

[编辑] 缺陷报告

以下行为更改缺陷报告已追溯应用于先前发布的 C 标准。

DR 应用于 已发布的行为 正确的行为
DR 485 C11 该规范冗余且与核心语言矛盾 已修复

[编辑] 参考

  • C17 标准 (ISO/IEC 9899:2018)
  • 7.17.2.1 ATOMIC_VAR_INIT 宏 (p: 201)
  • C11 标准 (ISO/IEC 9899:2011)
  • 7.17.2.1 ATOMIC_VAR_INIT 宏 (p: 274)

[编辑] 另请参阅

初始化一个新的 atomic_flag
(宏常量) [编辑]
C++ 文档 对于 ATOMIC_VAR_INIT