问题
I'd like to make use of the new atomic operations provided by the C11 standard. However, trying to #include
the appropriate header file gives me this:
csort-par.c:5:23: fatal error: stdatomic.h: No such file or directory
#include <stdatomic.h>
The documentation at http://gcc.gnu.org/wiki/C11Status seems to say that the header file has been provided since GCC 4.7... am I missing something? __STDC_NO_ATOMICS__
is not defined.
gcc --version
is as follows:
gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1
Copyright (C) 2013 Free Software Foundation, Inc.
And I confirmed that __STDC_NO_ATOMICS__
was not defined as follows:
#ifdef __STDC_NO_ATOMICS__
#error yes
#else
#error no
#endif
yields:
csort-par.c:10:2: error: #error no
#error no
EDIT: Thanks for the swift replies.
In case anyone stumbles on this from Google with the same question, here's a fix in the interim until they release GCC 4.9:
UNIX Portable Atomic Operations
回答1:
This file is missing. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58016
It was fixed only in gcc 4.9, as its release notes says (http://gcc.gnu.org/gcc-4.9/changes.html)
来源:https://stackoverflow.com/questions/20326604/stdatomic-h-in-gcc-4-8