Eclipse NEON.1 4.6.1 with CDT 9.1.0,g ++ 5.4.0
它无法识别所有c ++ 11/14功能。它确实识别auto
和nullptr
等关键字。然而,它不会识别来自标题的内容,这取决于正确定义的符号。
例如,当包含<memory>
时,它会识别像std::auto_ptr
这样的旧符号,而不是std::shared_ptr
之类的符号。这些较新的功能在#if __cplusplus >= 201103L
内。
我可以通过设置方言选项让它适用于标准的eclipse项目,但是我需要它来处理没有方言设置的基于autotools的项目。
我有使用AM_CXXFLAGS automake变量的程序的实际编译。为了让它为索引器工作,我在eclipse中使用了Project属性&gt; C / C ++一般&gt;预处理器包含路径,宏
然后到提供程序选项卡并为CDT GCC内置编译器设置的命令添加了-std = c ++ 14选项。我还将该提供程序移到了列表的顶部。在条目选项卡上,您可以看到__cplusplus定义的实际值。在我添加-std = c ++ 14开关之前,在我添加了开关之后它已经低于所需的201103L。
答案 0 :(得分:2)
找出问题所在。当我在命令中添加-std=c++14
选项以获取提供程序选项卡上的编译器规范时,我在“Debug”配置中添加了它们,因为我正在使用该配置。原来,索引器被设置为始终使用“Build”配置。在我为“构建”配置添加设置并重新编制索引之后,错误就消失了。