Paul Eggert wrote: > On 10/10/20 8:04 AM, Marc Nieper-Wißkirchen wrote: > > #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L && > > !defined (__STD_NO_ATOMICS__) > > > > I am asking because there may be non-C11 compilers that nevertheless > > understand _Atomic. > > I suggest not worrying about this problem until we run into it.
GCC 4.9.x is such a compiler that is non-C11 but supports _Atomic. With this test program ================================================================== #include <stdio.h> #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L \ && !defined (__STD_NO_ATOMICS__) # define GL_HAMT_THREAD_SAFE 1 #else # define GL_HAMT_THREAD_SAFE 0 #endif _Atomic int x; void increment_x (void) { x++; } int main (void) { printf ("GL_HAMT_THREAD_SAFE=%d\n", GL_HAMT_THREAD_SAFE); return 0; } ================================================================== the results on the various platforms are as follows: GL_HAMT_THREAD_SAFE _Atomic compiles _Atomic works GCC 4.8 0 0 0 GCC 4.9 0 1 1 GCC 5 1 1 1 GCC 6 1 1 1 GCC 7 1 1 1 GCC 8 1 1 1 GCC 9 1 1 1 GCC 10 1 1 1 macOS 10.13 1 1 1 FreeBSD 12 1 1 1 NetBSD 9 1 1 1 OpenBSD 6.7 cc 1 1 1 OpenBSD 6.7 gcc 0 0 0 AIX 7.1 xlc 0 0 0 Solaris 10 cc 0 0 0 Solaris 11.3 cc 12.4 0 0 0 Solaris 11.3 cc 12.5 1 1 1 Solaris 11.3 cc 12.6 1 1 1 MSVC 14 0 0 0 Bruno