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 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 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++编译器->杂项->其他 对于开普勒来说,旗帜还不够,但对于较老的版本,如太阳神,它已经足够了。
其他回答
右键单击项目,选择“属性” C/ c++ Build -> Settings -> Tool Settings -> GCC c++ Compiler -> Miscellaneous -> Other Flags。将-lm放在其他标志文本框的末尾,然后确定。
我在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设置
我在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++ ->核心构建工具链,并编辑那些具有不同路径的工具链,但我不确定这将做什么。
我在日食朱诺号上也遇到了同样的问题。这些步骤解决了问题:
进入“项目->属性-> C/ c++通用->路径和符号->选项卡[符号]。 添加符号:__cplusplus,值为201103L
对于我来说,我在Eclipse Neon上遵循了上面的Trismegistos的答案,然而我还添加了一个额外的步骤:
转到项目——>属性——> c++通用——>预处理器包括路径,宏等——>提供者——> CDT跨GCC内置编译器设置,附加标志"-std=c++11"
点击应用并确定。
欢呼,
Guy.