名稱空間
變體
操作

ATOMIC_VAR_INIT

來自 cppreference.com
< c‎ | atomic
在標頭檔案 <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 宏 (p: 274)

[編輯] 另請參閱

初始化新的 atomic_flag
(宏常量) [編輯]
C++ 文件,關於 ATOMIC_VAR_INIT