Quantcast
Channel: Can I apply the C11 `_Atomic` keyword to enum types? - Stack Overflow
Viewing all articles
Browse latest Browse all 3

Can I apply the C11 `_Atomic` keyword to enum types?

$
0
0

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;    }

Viewing all articles
Browse latest Browse all 3

Latest Images

Trending Articles





Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>
<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596344.js" async> </script>