8 Nisan 2019 Pazartesi

_Atomic Qualifier

Giriş
C11 ile geliyor.

Array Tanımlama
Örnek 1
Şöyle yaparız.
_Atomic int x[10];
Örnek 2
Diziyi heap'te tanımlamak istersek şöyle yaparız.
int * _Atomic x;
Daha sonra şöyle yaparız.
x = calloc(10, sizeof(_Atomic int));
for (...)
  atomic_init(&x[i], 0);
Atomic Qualifier ve Normal Primitive Tipi Karıştırarak Kullanma
Yapmamak lazım. Açıklaması şöyle.
...atomic-qualified types are not deemed compatible with qualified or unqualified versions of the types they're based on.
Şu kod yanlış.
const int test = 42;
const int * _Atomic atomic_int_ptr;
atomic_init(&atomic_int_ptr, &test);

const int ** int_ptr_ptr = &atomic_int_ptr;
printf("int = %d\n", **int_ptr_ptr); //prints int = 42

Hiç yorum yok:

Yorum Gönder