diff options
author | Chris Robinson <[email protected]> | 2018-01-11 10:03:26 -0800 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2018-01-11 10:03:26 -0800 |
commit | e89c183231d26770f4c8ae80a8d05063c34cf0c9 (patch) | |
tree | 4e0afc97391f196e74361a3f72d757986a580636 /common | |
parent | ca9e6a4f9434ca25f821802d1b6e1363b18d7b81 (diff) |
Avoid including alMain.h in ringbuffer.c
Diffstat (limited to 'common')
-rw-r--r-- | common/atomic.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/common/atomic.h b/common/atomic.h index 874d510d..2033476b 100644 --- a/common/atomic.h +++ b/common/atomic.h @@ -4,6 +4,19 @@ #include "static_assert.h" #include "bool.h" +#ifdef __GNUC__ +/* This helps cast away the const-ness of a pointer without accidentally + * changing the pointer type. This is necessary due to Clang's inability to use + * atomic_load on a const _Atomic variable. + */ +#define CONST_CAST(T, V) __extension__({ \ + const T _tmp = (V); \ + (T)_tmp; \ +}) +#else +#define CONST_CAST(T, V) ((T)(V)) +#endif + #ifdef __cplusplus extern "C" { #endif |