Eclipse NEON.1 4.6.1,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属性> C/C++一般>预处理器包括路径,宏
然后到提供程序选项卡并为CDT GCC内置编译器设置的命令添加-std = c 14选项.我还将该提供程序移到了列表的顶部.在条目选项卡上,您可以看到__cplusplus定义的实际值.在我添加-std = c 14开关之前,在我添加了开关之后,它已经高于所需的201103L.
最佳答案 找出问题所在.当我在命令中添加-std = c 14选项以获取提供程序选项卡上的编译器规范时,我在“调试”配置中添加了它们,因为我正在使用该配置.原来,索引器被设置为始终使用“Build”配置.在我为“构建”配置添加设置并重新编制索引之后,错误消失了.