【发布时间】: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