为什么Eclipse认为clang不支持std :: atomic

时间:2014-03-26 21:59:52

标签: c++ eclipse c++11 clang eclipse-cdt

我有一个eclipse c ++项目,它使用了一些c ++ 11特性。它使用cmake进行构建,因此它在eclipse中设置为具有现有makefile的项目。

它可以在eclipse或命令行中使用makefile构建。但我在atomic_bool时遇到语法错误,说符号无法解析。我在' C / C ++ General下添加了-std=c++11 - >预处理器包括模式 - >提供商 - > CDT GCC内置编译器设置'我将eclipse中的工具链设置为MacOSX GCC。

注意:threadshared_ptr等其他c ++ 11内容不会出现任何语法错误。

错误来自<atomic>标头,其中有预处理器if语句

#if !__has_feature(cxx_atomic)
#error <atomic> is not implemented
#else
...

#else下方的所有内容都显示为灰色。显然__has_feature(cxx_atomic)根据eclipse评估为0。但是,如果我从命令行检查它,它会显示它应该评估为true。

$ echo '__has_feature(cxx_atomic)' | g++ -x c++ -std=c++11 -E -
# 1 "<stdin>"
# 1 "<built-in>" 1
# 1 "<built-in>" 3
# 188 "<built-in>" 3
# 1 "<command line>" 1
# 1 "<built-in>" 2
# 1 "<stdin>" 2
1

为什么__has_feature(cxx_atomic)在Eclipse中评估为false,但如果检查编译器本身则不然?

2 个答案:

答案 0 :(得分:0)

尝试启用“构建输出解析器”。 http://www.eclipse.org/forums/index.php/t/501479/

答案 1 :(得分:0)

我也遇到过这个问题,支持其他C ++ 11功能,但原子不支持。