GCC 4.8中的<stdatomic.h>?</stdatomic.h>

时间:2013-12-02 10:58:39

标签: c multithreading gcc atomic c11

我想利用C11标准提供的新原子操作。但是,尝试#include相应的头文件会给我这个:

 csort-par.c:5:23: fatal error: stdatomic.h: No such file or directory
 #include <stdatomic.h>

http://gcc.gnu.org/wiki/C11Status上的文档似乎说自从GCC 4.7以来已经提供了头文件...我错过了什么? __STDC_NO_ATOMICS__未定义。

gcc --version如下:

gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1
Copyright (C) 2013 Free Software Foundation, Inc.

我确认__STDC_NO_ATOMICS__未定义如下:

#ifdef __STDC_NO_ATOMICS__
#error yes
#else
#error no
#endif

的产率:

csort-par.c:10:2: error: #error no
 #error no

编辑:感谢您的快速回复。

如果有人在谷歌遇到同样的问题而绊倒了这个问题,那么这是暂时的解决方案,直到他们发布GCC 4.9:

UNIX Portable Atomic Operations

1 个答案:

答案 0 :(得分:21)

此文件丢失。 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58016

它仅在gcc 4.9中修复,因为其发行说明(http://gcc.gnu.org/gcc-4.9/changes.html