我在Eclipse CDT中配置了一个C ++ 11项目以使用gcc-4.7。它不是我系统上的默认编译器,它不支持C ++ 11。为了使编译工作,我需要传递标志-std=c++11
并且还包括以下标题路径:/usr/local/Cellar/gcc/4.7.2/gcc/include/c++/4.7.2
每当我使用像std::unordered_set
或std::unordered_map
这样的C ++ 11容器类型时,CDT索引器就会抱怨:Symbol unordered_set could not be resolved
。如何告诉索引器正确解析这些符号?
这就是我配置索引器的方式:
据我了解设置,索引器应该使用当前活动的构建配置中的编译器设置。编译工作正常,为什么不编制索引呢?
如本论坛帖子所述:
http://www.eclipse.org/forums/index.php/mv/msg/282618/
__GXX_EXPERIMENTAL_CXX0X__
粘贴到“名称”中,并将“值”留空。点击Apply,做任何要求你做的事,然后按OK。设置**__GXX_EXPERIMENTAL_CXX0X__**
对我的情况没有帮助(2014年7月,Eclipse Kepler 20130919,Ubuntu 12.04)。
要修复C ++ 11语法高亮,请转到:
项目属性 - > C / C ++通用 - >路径和符号 - >符号 - > GNU C ++
并覆盖符号(即添加新符号):
__cplusplus
有价值的
201103L
更新:如果您使用较新版本的Eclipse(截至2016年)并仍然遇到相同的问题,请尝试使用值(由jose.diego指出):
201402L
确保在项目设置中启用了索引器(C / C ++ general - > Indexer)
然后重新索引(项目 - > C / C ++索引 - >重建)
如果问题仍然存在再次重新索引。它现在应该工作。
最近我在一些幸运的谷歌搜索后解决了这个问题。
单击您的项目,然后右键单击 - >属性
选择“C / C ++通用 - >处理器包含路径,宏等......”
选择“提供商”标签
取消选择除“CDT用户设置条目”和“CDT GCC内置编译器设置”之外的所有内容
点击“CDT GCC内置编译器设置”
取消选择“使用项目之间共享的全局提供程序”
编辑底部标有“Command to get compiler specs”的框
插入命令-std = c ++ 11,看起来像这样:
${COMMAND} -std=c++11 -E -P -v -dD "${INPUTS}"
单击“应用”和“确定”。
这对我有用。您可能需要重新编制项目索引。
或者去:
之后,将使用正确的值更新所有符号,并且索引器应按预期工作
对于使用外部构建器的项目,我的解决方法是定义符号:
__cplusplus
价值:
201403
在项目中:路径和符号 - >符号/ GNU C ++。
这在eclipse Kepler CDT版本中有效:8.3.0.201402142303。
以下工作在Eclipse
C/C++
Oxygen
.2与gcc-5.5.0
Eclipse Properties->C/C++ Build->Settings->GCC C++ Compiler->Dialect->Other dialect flags: -std=c++17
不要在Language standard
下拉列表中选择任何内容。
以下配置可帮助我解决原始问题中指出的问题。
环境:Eclipse(Oxygen.3a版本(4.7.3a)),Cygwin64。如果您有不同版本的Cygwin,您可以找到类似的目录,如下所示。
第1步:确保您有以下两个目录:
C:\cygwin64\lib\gcc\x86_64-pc-cygwin\7.4.0\include
C:\cygwin64\lib\gcc\x86_64-pc-cygwin\7.4.0\include\c++
如果您没有看到上述两个目录,请启动您的Cygwin安装程序并安装gcc-core,gcc-g ++和libgcc1。
步骤2:如果您没有看到上面两个包含目录,请将目录C:\cygwin64\lib\gcc\x86_64-pc-cygwin\7.4.0\include
复制到C:\cygwin64\usr
。
第3步:转到项目属性 - > C / C ++常规 - >路径和符号确保您可以看到列出以下两个路径
C:\cygwin64\usr\include
C:\cygwin64\usr\include\c++
第4步:属性 - > C / C ++构建/设置/选择Cygwin PE分析器
第5步:属性 - > C / C ++构建/工具链编辑器选择Cygwin GCC
第6步:属性 - > C / C ++常规/索引器选择启用索引器
第7步:项目 - > C / C ++索引 - >重建
现在你的eclipse应该能够看到C ++ 11类型。