Eclipse 3.7.1 CDT 1.4.1 GCC 4.6.2

下面是c++ 11代码的一个例子:

auto text = std::unique_ptr<char[]>(new char[len]);

Eclipse编辑器抱怨:

Function 'unique_ptr' could not be resolved

Makefile编译工作正常。如何让Eclipse停止抱怨这类错误?


当前回答

对于我来说,我在Eclipse Neon上遵循了上面的Trismegistos的答案,然而我还添加了一个额外的步骤:

转到项目——>属性——> c++通用——>预处理器包括路径,宏等——>提供者——> CDT跨GCC内置编译器设置,附加标志"-std=c++11"

点击应用并确定。

欢呼,

Guy.

其他回答

我在Mac上用这种方法解决了这个问题。我用Homebrew安装了最新版本的gcc/g++。它们落在/usr/local/bin中,包含在/usr/local/include中。

我CD到/usr/local/bin,做了一个符号链接,从g++@7whatever到g++,因为@位很烦人。

然后我打开MyProject -> Properties -> C/ c++ Build -> Settings -> GCC c++ Compiler并将命令从“g++”更改为“/usr/local/bin/g++”。如果您决定不使用符号链接,则可以更具体。

对链接器执行相同的操作。

应用,应用,关闭。让它重新构建索引。有一段时间,它显示了大量的错误,但我认为那是在建立索引时。当我找出错误时,它们都消失了,没有进一步的操作。


我认为在没有验证的情况下,你也可以进入Eclipse ->属性-> C/ c++ ->核心构建工具链,并编辑那些具有不同路径的工具链,但我不确定这将做什么。

对于Eclipse CDT Kepler,我摆脱std::线程未解析符号的工作是:

进入“首选项->C/ c++ ->构建->设置” 选择Discovery选项卡 选择CDT GCC内置编译器设置[共享] 在“Command to get compiler specs:”字段中添加-std=c++11,例如:

${COMMAND} -E -P -v -dD -std=c++11 ${输入}

好的,然后重建项目的索引。

添加-std=c++11到项目属性/ c / c++构建->设置->工具设置->GCC c++编译器->杂项->其他 对于开普勒来说,旗帜还不够,但对于较老的版本,如太阳神,它已经足够了。

我在使用Eclipse c++ 2019-03进行C和c++混合项目时遇到了类似的问题,该项目使用std::optional和std::swap。对我有用的是这个。

在项目中 属性->C/ c++构建->设置->工具设置->交叉g++编译器,从Miscellaneous中删除-std= gn++ 17,并将其放在Dialect->Other Dialect Flags中。

右键单击项目,选择“属性” C/ c++ Build -> Settings -> Tool Settings -> GCC c++ Compiler -> Miscellaneous -> Other Flags。将-lm放在其他标志文本框的末尾,然后确定。

对于我来说,我在Eclipse Neon上遵循了上面的Trismegistos的答案,然而我还添加了一个额外的步骤:

转到项目——>属性——> c++通用——>预处理器包括路径,宏等——>提供者——> CDT跨GCC内置编译器设置,附加标志"-std=c++11"

点击应用并确定。

欢呼,

Guy.