据我所知,以下声明创建了一个值数组,每个值都是原子的:
_Atomic int x[10];
但是,我不清楚这是否:
_Atomic int *x;
x = calloc(10, sizeof(int));
创建一个包含 10 个原子整数的数组,或者是指向非原子整数数组的原子指针。该语法是否声明一个原子数组或指向数组的原子指针,无论是哪一个,如何声明另一个?
(注:我知道atomic_int
,并且在所呈现的示例中它将消除歧义。这是我实际尝试做的一个更简单的版本,它使用原子枚举。谢谢!)
它是指向原子整数的指针,请参阅http://en.cppreference.com/w/c/language/atomic .
要声明指向整数的原子指针,您需要将关键字放在变量之前:
int * _Atomic x;
请注意,calloc 的示例可能适用于常见平台,但通常不保证非原子变量和原子变量的类型相同。所以有必要初始化变量atomic_init:
x = calloc(10, sizeof(_Atomic int));
for (...) atomic_init(&x[i], 0);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)