Namespaces
Variants

ATOMIC_VAR_INIT

From cppreference.net
定义于头文件 <stdatomic.h>
#define ATOMIC_VAR_INIT(value) /* 未指定 */
(C11 起)
(C17 中弃用)
(C23 中移除)

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

未显式初始化的自动存储期原子对象的初始值是不确定的。然而,静态变量和线程局部变量的默认(零)初始化会产生有效值。

当初始化原子变量时,任何并发访问(即使通过原子操作进行)都属于数据竞争(如果该地址通过 memory_order_relaxed 操作立即传递给其他线程,则可能发生这种情况)。

目录

注释

该宏是C11原子类型早期草案设计的一部分。在C11中不再需要此宏,于C17中被弃用,并在C23中移除。

缺陷报告

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

缺陷报告 适用标准 发布时行为 修正后行为
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 宏 (页: 274)

参见

初始化新的 atomic_flag
(宏常量)
C++ 文档 关于 ATOMIC_VAR_INIT