Я пытаюсь скомпилировать, используя g++
и флаги -std=c++11
или c++0x
.
Однако я получаю эту ошибку
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
с g ++g++ --version
. Затем разместите номер версии здесь.g++-
в окне консоли.Ответы:
Судя по вашей версии G ++, вам нужно ее сильно обновить. C ++ 11 доступен только с G ++ 4.3. Самая последняя версия - 4.7.
В версиях до G ++ 4.7 вам придется использовать
-std=c++0x
, для более поздних версий вы можете использовать-std=c++11
.источник
Цитата с сайта gcc :
Вероятно, вы используете версию g ++, которая не поддерживает
-std=c++11
. Попробуйте-std=c++0x
вместо этого.Функции C ++ 11 доступны только для версий> = 4.3.
источник
ты должен попробовать это
g++-4.4 -std=c++0x or g++-4.7 -std=c++0x
источник
У меня также была такая же ошибка, при компиляции с флагом -D она была исправлена. Попробуйте следующее:
g ++ -Dstd = c ++ 11
источник
std::vector<int> v = {1, 2, 3};
для тестирования, и она выдавала всевозможные ошибки (хотя и другие ошибки, чем без флага, что довольно интересно).-D
Аргумент командной строки эквивалентно вставки#define
в исходном коде. Итак, эта команда похожа на наличие#define std c++11
. Можете ли вы тогда представить, какstd::string
это будет переопределеноc++11::string
? Совсем не очень полезно.