Próbuję skompilować przy użyciu g++
i flag -std=c++11
lub c++0x
.
Jednak pojawia się ten błąd
cc1plus: error: unrecognized command line option "-std=c++11"
g ++ --version
g++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-std=c++0x
z g ++g++ --version
. Następnie opublikuj tutaj numer wersji.g++-
w oknie konsoli.Odpowiedzi:
Widząc z wersji G ++, musisz ją źle zaktualizować. C ++ 11 był dostępny dopiero od wersji G ++ 4.3. Najnowsza wersja to 4.7.
W wersjach wcześniejszych niż G ++ 4.7 będziesz musiał użyć
-std=c++0x
, dla nowszych wersji możesz użyć-std=c++11
.źródło
Cytowanie ze strony internetowej gcc :
Więc prawdopodobnie używasz wersji g ++, która nie obsługuje
-std=c++11
. Spróbuj-std=c++0x
zamiast tego.Dostępność funkcji C ++ 11 dotyczy tylko wersji> = 4.3.
źródło
powinieneś tego spróbować
g++-4.4 -std=c++0x or g++-4.7 -std=c++0x
źródło
Mam również ten sam błąd, kompilacja z flagą -D naprawiła go, spróbuj tego:
g ++ -Dstd = c ++ 11
źródło
std::vector<int> v = {1, 2, 3};
do testowania i rzucał na niego różnego rodzaju błędy (inne błędy niż bez flagi, co ciekawe).-D
Argument wiersza poleceń jest równoważna wstawiając#define
w kodzie źródłowym. Więc to polecenie jest jak posiadanie#define std c++11
. Czy możesz sobie wyobrazić, jakstd::string
zostanie przedefiniowanac++11::string
? Niezbyt przydatne.