Я попытался освоить C ++ и приобрел книгу Бьярна Страуструпа «Программирование — принципы и практика с использованием C ++».
Когда я попытался скомпилировать следующий исходный код:
#include "std_lib_facilities.h"int main(){
cout<<"Hello, World!\n";
keep_window_open();
return 0;
}
Я получаю следующую ошибку компиляции:
In file included from /Users/hypertrooper/Documents/Programming - Principles and Practice Using C++/hello_world.cpp:1:
std_lib_facilities.h:71:20: warning: alias declarations are a C++11 extension [-Wc++11-extensions]
using size_type = typename std::vector<T>::size_type;
^
std_lib_facilities.h:102:20: warning: alias declarations are a C++11 extension [-Wc++11-extensions]
using size_type = std::string::size_type;
^
std_lib_facilities.h:107:8: warning: comparison of unsigned expression < 0 is always false [-Wtautological-compare]
if (i<0||size()<=i) throw Range_error(i);
~^~
std_lib_facilities.h:113:8: warning: comparison of unsigned expression < 0 is always false [-Wtautological-compare]
if (i<0||size()<=i) throw Range_error(i);
~^~
std_lib_facilities.h:213:107: error: expected '(' for function-style cast or type construction
inline int randint(int min, int max) { static default_random_engine ran; return uniform_int_distribution<>{min, max}(ran); }
~~~~~~~~~~~~~~~~~~~~~~~~~~^
std_lib_facilities.h:222:20: warning: alias declarations are a C++11 extension [-Wc++11-extensions]
using Value_type = typename C::value_type;
^
std_lib_facilities.h:225:18: warning: alias declarations are a C++11 extension [-Wc++11-extensions]
using Iterator = typename C::iterator;
^
6 warnings and 1 error generated.
Я понял, что мой компилятор не использует функцию C ++ 11, но я не знаю, как я могу обновить компилятор. Я должен сообщить, что я использую MacOSX (10.10 Yosemite) и пытался скомпилировать с xCode и textmate. Я даже пытался следовать этому уроку (https://wiki.helsinki.fi/display/HUGG/Installing+the+GNU+compilers+on+Mac+OS+X), но это не помогло. (По крайней мере, когда я пытался скомпилировать с текстовым сопряжением)
Я надеюсь, что вы можете мне помочь. 🙁
Что вам нужно сделать, это открыть настройки проекта -> Настройки сборки и установить C ++ Language Dialect на C ++ 11 и C ++ Standard Library на libc ++ (LLVM C ++ стандартная библиотека с поддержкой C ++ 11).
Если вы работаете на Mac или Linux, компилятор обычно g ++ или clang; чтобы получить доступ к C ++ 11, просто укажите -std=c++11
в качестве опции при вызове компилятора (при условии, что у вас установлена последняя версия).
В настройках сборки отрегулируйте Диалект C ++ до C ++ 11 …
Также убедитесь, что вы используете библиотеку LLVM C ++, так как она имеет полную поддержку C ++ 11.