C17标准反对ATOMIC_VAR_INIT与stdatomic.h,这意味着它仍然支持它,但希望它不被使用。在C17中初始化原子的正确方法是什么?
与非原子类型相同:
atomic_int foo = 42;或者是新的东西?
发布于 2018-05-02 20:22:53
C17可以使用通常的显式初始化来初始化atomics:
atomic_int n = 42;C17刚刚从7.17.2.1的句子中删除了两个单词“使用ATOMIC_VAR_INIT”。
发布于 2018-04-27 09:38:12
基于那份文件,节DR 454,使用宏使得不可能知道在哪种状态下是变量。
atomic_int guide1 = ATOMIC_VAR_INIT(42); /* known value(42); WHAT STATE? */但使用正常的分配也是未定的,如下图所示。
atomic_int guide2; /* indeterminate value; indeterminate state */
atomic_int guide3 = 42; /* known value(42); indeterminate state */要将变量置于已知状态,必须使用static或atomic_init函数。
static atomic_int guide4; /* known value(0); valid state */
static atomic_int guide5 = 42; /* known value(42); valid state */
atomic_int guide6;
atomic_init(&guide6, 42); /* known value(42); initialized state */但这是我唯一能找到的信息。
https://stackoverflow.com/questions/48841767
复制相似问题