【问题标题】:Cannot set Eclipse Juno C++ with std=c++11无法使用 std=c++11 设置 Eclipse Juno C++
【发布时间】:2023-04-03 04:30:01
【问题描述】:

我有 Eclipse Juno C++(内部版本号:20120614-1722)。我正在尝试使用指令 -std=c++11 或 -std=c++0x 设置编译器调用参数,但同时编译下面的代码。 Eclipse Juno 中没有“工具设置”(至少对于 Mac),所以我无法转到“C/C++ 构建 -> 设置 -> 工具设置”。我的编译器是 GCC 4.8.0

#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
int main(void) {
    vector<string> v = {"a","b","c"};
    for(string s: v){
        cout << s << endl;
    }
    return 0;
}

我明白了:

HelloWorld.cpp:16:33: error: could not convert ‘{"a", "b", "c"}’ from ‘<brace-enclosed initializer list>’ to ‘std::vector<std::basic_string<char> >’
HelloWorld.cpp:17:16: error: range-based ‘for’ loops are not allowed in C++98 mode

【问题讨论】:

  • 您使用的是什么实际的编译器和标准库?
  • 您是否确保为 g++ 设置了选项(而不是工具链的不同部分)? :这样做:C/C++ Build -> Settings -> Tool Settings -> GCC C++ Compiler -> Miscellaneous -> Other Flags。把 -std=c++0x 放在最后。
  • Eclipse Juno 中没有“工具设置”。
  • 由于 GCC 4.8 显然不是标准的系统编译器,您确定 Eclipse 在构建时确实调用了该编译器并且不默认为系统编译器吗?除非您的项目是 Makefile 项目,否则您应该有 Project->Properties->C/C++ Build->Settings,并且有一个工具设置选项卡,您可以在其中配置编译器的绝对路径以及命令行选项。

标签: c++ eclipse c++11 compiler-errors eclipse-juno


【解决方案1】:

您可以按照我在此答案中描述的步骤进行操作: Eclipse CDT C++11/C++0x support

一种可能性是,您的选项被应用于工具链的错误部分。

【讨论】:

    【解决方案2】:

    我刚刚遇到了完全相同的问题。请检查您的项目是否有自定义 "makefile" ( *.mk )。如果它有那个“makefile”,请将以下内容放入您的“makefile”并编译。

    “LOCAL_CFLAGS := -fexceptions -std=c++0x -std=c++11”

    PS: LOCAL_CFLAGS 用于编译器标志,您可以将其放入“xxx > Miscellaneous”中。坦率地说,如果您的项目没有自定义“makefile”,我不知道如何解决它。但是,Eclipse Juno 确实没有上面描述的那些人的路径。

    【讨论】:

      【解决方案3】:

      您没有看到 Tool Settings 的原因是因为在创建项目时,您应该选择 Executable 而不是 GNU Autotools

      【讨论】:

      • 如果您需要并且想要自动工具并正确配置它,您的代码编译得很好,但 Eclipse 仍然显示语法错误。选择不使用 autotools 并不能解决问题。
      猜你喜欢
      • 1970-01-01
      • 2015-08-16
      • 2013-07-05
      • 1970-01-01
      • 2013-07-01
      • 2018-09-12
      • 1970-01-01
      • 2023-03-22
      • 2019-02-18
      相关资源
      最近更新 更多