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中。

其他回答

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

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

点击应用并确定。

欢呼,

Guy.

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

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

我在Eclipse论坛上找到了这篇文章,只需要按照这些步骤,它就适合我了。我在Windows上使用Cygwin设置的Eclipse Indigo 20110615-0604。

Make a new C++ project Default options for everything Once created, right-click the project and go to "Properties" C/C++ Build -> Settings -> Tool Settings -> GCC C++ Compiler -> Miscellaneous -> Other Flags. Put -std=c++0x (or for newer compiler version -std=c++11 at the end . ... instead of GCC C++ Compiler I have also Cygwin compiler C/C++ General -> Paths and Symbols -> Symbols -> GNU C++. Click "Add..." and paste __GXX_EXPERIMENTAL_CXX0X__ (ensure to append and prepend two underscores) into "Name" and leave "Value" blank. Hit Apply, do whatever it asks you to do, then hit OK.

现在在Eclipse FAQ/ c++ 11 Features中也有关于这方面的描述。

Eclipse设置

2016年更新:

从gcc 6开始(更改),默认的c++方言是c++ 14。这意味着,除非您明确地需要比than更新或更老的方言,否则您不需要再使用eclipse做任何事情了。

月球和火星

这个社区wiki部分包含了Trismegistos的答案;

1. 在创建项目之前,配置Eclipse语法解析器:

窗口->首选项-> C/ c++ ->构建->设置->发现-> CDT GCC内置编译器设置

在标题为“命令获取编译器规格”的文本框中添加-std=c++14 2. 创建项目,配置取决于你创建的项目类型:

对于创建为:File -> New -> project -> C/ c++ -> c++ project

右键单击创建的项目并打开

属性-> C/ c++构建->设置->工具设置-> GCC c++编译器->方言

将-std=c++14放入标题为“其他方言标志”的文本框中,或从“语言标准”下拉菜单中选择“ISO c++ 11”。

现在有一种新的方法来解决这个问题,而不需要GXX_EXPERIMENTAL黑客。

对于最新版本:(目前是朱诺和开普勒Luna):

在Juno的新版本下,设置位于项目属性-> C/ c++通用->预处理器包括路径,宏等->选项卡提供程序-> CDT GCC内置编译器设置()。

旧版本2012/2013:

在C/ c++ Build (at project settings)下,找到Preprocessor Include Path,然后转到Providers选项卡。取消选择除CDT GCC内置编译器设置外的所有设置。然后取消标记共享设置条目... .在名为Command的文本框中添加选项-std=c++11以获取编译器规格。 选择路径和符号。在符号下,单击恢复默认值,然后应用。


注:

Eclipse对点击apply很挑剔,每次离开设置选项卡时都需要这样做。

【自我推广】:在以上的基础上,我自己写了更详细的说明。 http://scrupulousabstractions.tumblr.com/post/36441490955/eclipse-mingw-builds

感谢https://stackoverflow.com/a/13635080/1149664的用户Nobody

无论是hack版本还是更干净的版本都不能用于Indigo。黑客被忽略,所需的配置选项丢失。没有明显的原因,构建在不能工作后开始工作,并且没有提供任何有用的原因。至少从命令行,我得到了可重复的结果。