命名空间
变体
操作

ATOMIC_VAR_INIT

来自 cppreference.cn
< 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