If I have a type
enum foo { FOO, BAR, BAZ,};
can I then declare an atomic version of that type like
_Atomic(enum foo);
or do I have to use e.g. atomic_int
and cast the result of atomic_load()
?
The following program compiles without warnings:
#include <stdatomic.h> #include <stdio.h> enum foo {FOO, BAR, BAZ}; int main(void) { _Atomic(enum foo) foo_a; atomic_store(&foo_a, BAR); enum foo val = atomic_load(&foo_a); printf("%u\n", val); return 0; }
but so does:
#include <stdatomic.h> #include <stdio.h> enum foo {FOO, BAR, BAZ}; int main(void) { enum foo foo; // <---- non atomic atomic_store(&foo, BAR); enum foo val = atomic_load(&foo); printf("%u\n", val); return 0; }