[英]Why does Eclipse think clang doesn't support std::atomic
我有一个使用某些c ++ 11功能的eclipse c ++项目。 它使用cmake进行构建,因此在eclipse中将其设置为具有现有Makefile的项目。
使用Eclipse或命令行中的makefile可以很好地构建它。 但是我收到atomic_bool
语法错误,说该符号无法解析。 我在“ C / C ++常规->预处理程序包含模式->提供程序-> CDT GCC内置编译器设置”下添加了-std=c++11
,并且将eclipse中的工具链设置为MacOSX GCC。
注意:其他c ++ 11之类的东西,例如thread
或shared_ptr
不会给出任何语法错误。
错误来自<atomic>
标头,其中有预处理器if
语句
#if !__has_feature(cxx_atomic)
#error <atomic> is not implemented
#else
...
#else下的所有内容均为灰色。 因此,显然__has_feature(cxx_atomic)
根据月食评估为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,但如果我检查编译器本身,则不是?
尝试启用“构建输出解析器”。 http://www.eclipse.org/forums/index.php/t/501479/
我也遇到了这个问题,支持其他C ++ 11功能,但不支持atomic。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.