Я пытаюсь скомпилировать с помощью 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.
Увидев из вашей версии g++, вам нужно ее плохо обновить. С++ 11 доступен только с g++ 4.3. Самая последняя версия - 4.7.
В версиях pre-g++ 4.7 вам нужно будет использовать -std=c++0x
, для более поздних версий вы можете использовать -std=c++11
.
Цитата из gcc-сайта:
Функции С++ 11 доступны как часть компилятора GCC "mainline" в соединительной линии репозитория GCC Subversion и в GCC 4.3 и более поздних версиях. Чтобы включить поддержку С++ 0x, добавьте параметр командной строки -std = С++ 0x в вашу командную строку g++. Или, чтобы включить расширения GNU в дополнение к расширениям С++ 0x, добавьте -std = gnu ++ 0x в вашу командную строку g++. GCC 4.7 и более поздние версии поддерживают -std = С++ 11 и -std = gnu ++ 11.
Возможно, вы используете версию g++, которая не поддерживает -std=c++11
. Вместо этого попробуйте -std=c++0x
.
Доступность функций С++ 11 предназначена только для версий >= 4.3.
clang
!
вы должны попробовать это
g++-4.4 -std=c++0x or g++-4.7 -std=c++0x
Я также получил ту же ошибку, компиляция с флагом -D исправлена, попробуйте следующее:
g++ -Dstd = С++ 11
std::vector<int> v = {1, 2, 3};
чтобы проверить, и он выбрасывал всевозможные ошибки над ним (хотя и другие ошибки, чем без флага, достаточно интересно).
-std=c++0x
с g ++