ATOMIC_FLAG_INIT
来自cppreference.com
在标头 <atomic> 定义 | ||
#define ATOMIC_FLAG_INIT /* 由实现定义 */ | (C++11 起) | |
定义可以通过 std::atomic_flag v = ATOMIC_FLAG_INIT; 的形式初始化 std::atomic_flag 为清除状态的初始化器。它能否用于其他初始化语境是未指定的。
只能通过这种方式初始化 std::atomic_flag 为确定值:以其他方式初始化后保有的值未指定。 | (C++20 前) |
不再需要此宏,因为 std::atomic_flag 的默认构造函数会将它初始化为清除状态。它为与 C 的兼容而保留。 | (C++20 起) |
[编辑]示例
运行此代码
#include <atomic> std::atomic_flag static_flag = ATOMIC_FLAG_INIT;// 静态初始化,// 保证在静态对象的动态初始化期间可用。 int main(){std::atomic_flag automatic_flag = ATOMIC_FLAG_INIT;// 保证有效// std::atomic_flag another_flag(ATOMIC_FLAG_INIT); // 未指定}
[编辑]缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
缺陷报告 | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
LWG 2159 | C++11 | 不明确 ATOMIC_FLAG_INIT 能否用于其他初始化语境 | 其他用法不保证可行 |
LWG 3659 | C++20 | ATOMIC_FLAG_INIT 被弃用,但一些平台上 C 需要 | 它不再被弃用 |
[编辑]参阅
(C++11) | 免锁的布尔原子类型 (类) |
ATOMIC_FLAG_INIT 的 C 文档 |