问题
I have Eclipse Juno C++ ( Build id: 20120614-1722 ). I'm trying to set the compiler invocation arguments with instruction -std=c++11 or -std=c++0x but while compiling the code below. There is no "Tool Settings" in Eclipse Juno (at least for Mac), so I cannot go to "C/C++ Build -> Settings -> Tool Settings". My compiler is 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;
}
I got:
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
回答1:
you might to follow the steps I described in this answer: Eclipse CDT C++11/C++0x support
One possibility is, that your options were applied to the wrong part of the tool chain.
回答2:
I just faced exactly the same problem. Please check whether your project has a custom
"makefile" ( *.mk )
. If it has that "makefile", please put the following to your "makefile" and compile.
"LOCAL_CFLAGS := -fexceptions -std=c++0x -std=c++11"
PS: LOCAL_CFLAGS is for the compiler flags which you can put in "xxx > Miscellaneous". And to be frank, I don't know how to solve it if your project doesn't have custom "makefile". But, Eclipse Juno literally doesn't have the path the guys in the above described.
回答3:
The reason you don't see Tool Settings is because upon creating project, you should choose Executable instead of GNU Autotools
来源:https://stackoverflow.com/questions/11420336/cannot-set-eclipse-juno-c-with-std-c11