Eclipse NEON CDT 无法识别 c++11/14 header 内容

Eclipse NEON CDT doesn't recognize c++11/14 header content

Eclipse NEON.1 4.6.1 与 CDT 9.1.0,g++ 5.4.0

它无法识别所有 c++11/14 功能。它确实可以识别 autonullptr 等关键字。但是,它无法识别来自 headers 的内容,这取决于所定义的正确符号。

例如,当包含 <memory> 时,它会识别像 std::auto_ptr 这样的旧符号,而不识别像 std::shared_ptr 这样的旧符号。这些较新的功能在 #if __cplusplus >= 201103L.

我可以通过设置方言选项让它在标准 eclipse 项目中工作,但我需要它在没有方言设置的基于 autotools 的项目中工作。

我使用 AM_CXXFLAGS automake 变量对程序进行了实际编译。为了让它为索引器工作,我在 eclipse 中进入了 Project properties > C/C++ General > Preprocessor Include Paths, Macros

然后到提供程序选项卡并为 CDT GCC Built-in 编译器设置的命令添加 -std=c++14 选项。我也将该提供商移到了列表的顶部。在条目选项卡上,您可以看到 __cplusplus 定义的实际值。在我添加 -std=c++14 开关之前,它远低于所需的 201103L,在我添加开关之后,它远高于要求。

找出问题所在。当我在命令中添加 -std=c++14 选项以在提供程序选项卡上获取编译器规范时,我在使用该配置时为 "Debug" 配置添加了它们。结果是索引器设置为始终使用 "Build" 配置。在我也为 "Build" 配置添加设置并重新索引后,错误消失了。