ATOMIC_VAR_INIT
|
|
Defined in header
<stdatomic.h>
|
||
#define ATOMIC_VAR_INIT(value) /* unspecified */
|
(since C11)
(deprecated in C17) (removed in C23) |
|
Expands to an expression that can be used to initialize an atomic variable of the same type as
value
.
The initial value of atomic object of automatic storage duration that is not explicitly initialized is indeterminate. The default (zero) initialization of static and thread-local variables produces a valid value however.
When initializing an atomic variable, any concurrent access, even through an atomic operation, is a data race (it may happen if the address is immediately passed to another thread with a memory_order_relaxed operation).
Notes
This macro was a part of early draft design for C11 atomic types. It is not needed in C11, and is deprecated in C17 and removed in C23.
Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C standards.
DR | Applied to | Behavior as published | Correct behavior |
---|---|---|---|
DR 485 | C11 | the specification was redundant and contradictory to the core language | fixed |
References
- C17 standard (ISO/IEC 9899:2018):
-
- 7.17.2.1 The ATOMIC_VAR_INIT macro (p: 201)
- C11 standard (ISO/IEC 9899:2011):
-
- 7.17.2.1 The ATOMIC_VAR_INIT macro (p: 274)
See also
(C11)
|
initializes a new
atomic_flag
(macro constant) |
C++ documentation
for
ATOMIC_VAR_INIT
|