【问题标题】:How do you compile c++0x code using Eclipse?如何使用 Eclipse 编译 c++0x 代码?
【发布时间】:2013-10-27 08:08:20
【问题描述】:

由于我决定满怀热情地投入开源世界,我下载了面向 C/C++ 开发人员的 Eclipse IDE(Kepler Service Release 1)并安装了 minGW。

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

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

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

【问题讨论】:

  • 您使用哪个版本的 GCC?
  • This question 可能会有所帮助。
  • @JoachimPileborg 我不知道。我怎么知道?我正在为 C/C++ 开发人员使用 Eclipse(Kepler Service Release 1)
  • 打开MinGW控制台,输入命令gcc --version
  • @JoachimPileborg 我不知道 minGW 控制台是什么。如何打开它?

标签: c++ eclipse


【解决方案1】:

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

不幸的是,唯一的答案是我认为是 hack。如果您查看 Tuple 标头,您会看到:

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

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

项目属性->C/C++ 常规->路径和符号

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

顺便说一句,我认为有人创建 Eclipse CDT + Mingw GCC 安装程序来正确设置所有内容的时间已经过长了。这个问题只是您在使用此 IDE 和工具链时遇到的大量问题的皮毛,从错误的 Mingw 版本到 IDE 中糟糕的索引和解析。在那张纸条上,请始终确保您没有使用有缺陷的 Mingw 发行版。这也可能导致这些问题。

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

【讨论】:

    猜你喜欢
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    相关资源
    最近更新 更多