如何使用Eclipse编译c ++ 0x代码?

时间:2013-10-18 13:02:56

标签: c++ eclipse

当我决定热衷于开源世界时,我下载了用于C / C ++开发人员的Eclipse IDE(Kepler Service Release 1)并安装了minGW。

我使用minGW作为工具链创建了一个新项目,我可以使用<iostream>创建hello world程序,但是如果我尝试创建tuple,智能指针或任何其他c + + 0x thingy我收到“找不到符号”错误:

#include <tuple>
int main(int in)
{
    std::tuple<int> lameTuple; // symbol "tuple" could not be resolved
    return 0;
}

我尝试将-std=c++0x添加到GCC C ++编译器工具设置中的其他标志,但这似乎没有帮助。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我也遇到过这个问题。在Windows上使用Eclipse + Mingw GCC是一个令人难以置信的......令人震惊的设置,因为这样的随机问题。例如,我的工作区中有一个C ++ 11项目,除了std = c ++ 11或gnu标志外,不需要任何解决方法,而其他项目则完全死亡。

不幸的是,唯一的答案是我认为是黑客攻击。如果您查看Tuple标题,您会看到:

#if __cplusplus < 201103L
# include <bits/c++0x_warning.h>
#else

所以这里答案(解决方案)变得明显。某处,无论是编译器标志还是.cpp文件中的定义,您都希望将__cplusplus定义为大于201103L。我这样做是为了进入

  

项目属性 - &gt; C / C ++一般 - &gt;路径和符号

然后,在“符号”选项卡下,我添加了一个新符号。对于我使用__cplusplus的符号名称和我使用201303L的值。这将强制索引器重新运行,此时Eclipse将正确使用C ++ 11包含。

另一方面,我认为有人创建了一个Eclipse CDT + Mingw GCC安装程序,可以正常设置所有内容。这个问题只是揭示了您使用此IDE和工具链遇到的大量问题,从错误的Mingw版本到IDE中的糟糕索引和解析。在那个注意事项上,请务必确保您没有使用Mingw的错误分发。这也可能导致这些问题。

编辑#1
另请注意,即使使用此符号,也应在 - “其他”下包含--std = X标志作为编译器标志。此符号仅供IDE使用正确的C ++ 11支持解析标头。