ATOMIC_FLAG_INIT
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
定义于头文件
<atomic>
|
||
|
#define ATOMIC_FLAG_INIT /* 由实现定义 */
|
(C++11 起) | |
定义可用于将 std::atomic_flag 初始化为清除(false)状态的初始化器,形式为 std:: atomic_flag v = ATOMIC_FLAG_INIT ; 。未指明该初始化器是否可用于其他初始化上下文。
如果该标志是具有 静态存储期 的 完整对象 ,则此 初始化是静态的 。
|
这是将 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)
|
无锁布尔原子类型
(类) |
|
C 文档
关于
ATOMIC_FLAG_INIT
|
|