Eclipse CDT无法解析大多数标准库构造

时间:2015-12-15 22:26:43

标签: eclipse include eclipse-cdt indexer

我在Debian Stretch(有时在Fedora 22上)使用Eclipse CDT Mars(有时是Cevelop)来编写一些C ++代码。我的项目在Eclipse中得到了正确的定义,甚至在我暂时没有错误的情况下构建。

然而......大多数(或所有)C ++标准库构造都被标记为未解析的定义:std :: string,std :: make_pair,std :: map,all all it。我试图手动添加我能想到的任何包含目录,但无济于事:

/usr/include/
/usr/include/c++/4.9
/usr/include/c++/4.9/bits
/usr/include/x86_64-linux-gnu
/usr/include/x86_64-linux-gnu/bits
/usr/include/c++/4.9/debug
/usr/lib/gcc/x86_64-linux-gnu/4.9/include
/usr/lib/gcc/x86_64-linux-gnu/4.9/include-fixed

这对我来说并不是一个新问题,我已经有很长一段时间了,早期版本的Eclipse也是如此,我从来没有开始询问它。

相关/类似问题:Eclipse CDT fails to resolve most standard library constructs

1 个答案:

答案 0 :(得分:1)

问题是由于使用了C ++ 11构造。

Eclipse运行GCC(或您设置的任何编译器)来解析和/或索引代码。您使用的gcc版本4.9默认为C ++ 03(如果不是更早),并且将确定C ++ 11 / C ++ 14语法是错误的。

要更改此设置,您需要修改Indexer的GCC命令行:在菜单中,选择

项目> 属性> C / C ++一般> 预处理器包括路径,宏等。> 提供商> CDT GCC内置编译器设置

现在,您将看到一个名为“获取编译器规范的命令”的文本框。在其他一个开关之后添加-std=c++11