我有一个eclipse c ++项目,它使用了一些c ++ 11特性。它使用cmake进行构建,因此它在eclipse中设置为具有现有makefile的项目。
它可以在eclipse或命令行中使用makefile构建。但我在atomic_bool
时遇到语法错误,说符号无法解析。我在' C / C ++ General下添加了-std=c++11
- >预处理器包括模式 - >提供商 - > CDT GCC内置编译器设置'我将eclipse中的工具链设置为MacOSX GCC。
注意:thread
或shared_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,但如果检查编译器本身则不然?
答案 0 :(得分:0)
尝试启用“构建输出解析器”。 http://www.eclipse.org/forums/index.php/t/501479/
答案 1 :(得分:0)
我也遇到过这个问题,支持其他C ++ 11功能,但原子不支持。