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

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

其他回答

我在日食朱诺号上也遇到了同样的问题。这些步骤解决了问题:

进入“项目->属性-> C/ c++通用->路径和符号->选项卡[符号]。 添加符号:__cplusplus,值为201103L

我也有几个问题(Ubuntu 13.04 64位,g++-4.8, eclipse Juno 3.8.1, CDT 6.0.0)。上面提到了很多事情,抱歉重复那些,但另外我有问题使用

std::thread

作为c++11的一部分(为链接器添加-pthread可以解决这个问题)。不管怎样,最终这些设置工作正常:

项目->属性-> C/ c++构建->设置->其他。添加

-std=c++11

GCC和g++编译器的标志。单击Apply。

对于链接器,相同的窗口,杂项,链接器标志,添加

-pthread

国旗。共享库设置、共享对象名称、添加

-Wl,--no-as-needed

国旗。单击Apply。

C/ c++通用->路径和符号->符号选项卡,GNU c++选中,添加

__GXX_EXPERIMENTAL_CXX0X__

(没有价值)

国旗。单击Apply。

预处理器包含路径..—>提供商页签:检查

CDT GCC内置编译器设置

对于“命令获取编译器规格”,添加

-std=c++11

国旗。取消共享。单击Apply。

CDT管理构建设置条目,也检查这个。取消另外两个。单击Apply。

回到条目选项卡,GNU c++ CDT管理构建设置条目,您现在应该看到您添加的条目

__GXX_EXPERIMENTAL_CXX0X__

条目。

就是这样。编码时,打字

std::

现在可以自动完成线程类,例如,构建应该工作良好,应该没有

std::system_error'what(): Enable multithreading to use std::thread: Operation not permitted

在运行时。

要在Eclipse Luna中获得对c++ 14的支持,您可以执行以下步骤:

在c++ General ->预处理器Include -> Providers -> CDT Cross GCC内置编译器设置中,添加"-std=c++14" 在c++ Build -> Settings -> Cross g++ Compiler -> Miscellaneous中,添加"-std=c++14"

重新索引项目并最终重新启动Eclipse。它应该像预期的那样工作。

我在使用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放在其他标志文本框的末尾,然后确定。