Coderunner 2 - Инициализация списка ошибок - C++11

Я новичок в программировании и изучаю C++ с книгой Бьярне, версия C++11. Я использую Coderunner 2 с инструментами командной строки Xcode, установленными на OS X El Cap. Я получаю ошибки для следующего кода при создании переменных с использованием списков инициализаторов. Я считаю, что Coderunner не работает с ++ 11. Я полный новичок, и я не знаю, что делать для меня. Полезные советы приветствуются. Заранее спасибо.

версия clang: Apple LLVM версия 7.0.0 (clang-700.0.72)

    #include <iostream>
    #include <complex>
    #include <vector>
    using namespace std;

    int main(int argc, char** argv) 
    {
        double d1 = 2.3; //Expressing initialization using =
        double d2{2.3}; //Expressing initialization using curly-brace-delimited lists

        complex<double> z = 1;
        complex<double> z2{d1,d2};
        complex<double> z3 = {1,2};

        vector<int> v{1,2,3,4,5,6};

        return 0;
    }

Я получаю следующую ошибку:

    2.2.2.2.cpp:9:11: error: expected ';' at end of declaration
    double d2{2.3}; //Expressing initialization using curly-brace-delimited lists
             ^
             ;
    2.2.2.2.cpp:12:20: error: expected ';' at end of declaration
    complex<double> z2{d1,d2};
                      ^
                      ;
    2.2.2.2.cpp:13:18: error: non-aggregate type 'complex<double>' cannot be initialized with an initializer list
    complex<double> z3 = {1,2};
                    ^    ~~~~~
    2.2.2.2.cpp:15:15: error: expected ';' at end of declaration
    vector<int> v{1,2,3,4,5,6};
                 ^
                 ;
    4 errors generated.

3 ответа

C++11 не по умолчанию. Используя clang++, для компиляции в C++11 необходимо следующее:

-std=c++11 -stdlib=libc++

В Coderunner 2 вам нужно изменить скрипт, относящийся к C++, включив вышеописанное. Перейдите в Coderunner> Настройки, затем для языка выберите C++ и нажмите "Редактировать скрипт":

Coderunner - Настройки

Вы увидите файл 'compile.sh' в Coderunner. Изменить строку 78:

xcrun clang++ -x c++ -std=c++11 -stdlib=libc++ -lc++ -o "$out" "$

Изменить строку 85:

"$CR_DEVELOPER_DIR/bin/clang" -x c++ -std=c++11 -stdlib=libc++ -lc++ -o "$out" "${files[@]}" "-I$CR_DEVELOPER_DIR/include" "-I$CR_DEVELOPER_DIR/lib/clang/6.0/include" "-I$CR_DEVELOPER_DIR/include/c++/v1" "${@:1}"

Надеюсь, это поможет! Спасибо, Серж Баллеста, за то, что указал мне правильное направление.

CodeRunner -> Настройки... -> Вкладка "Языки" -> C++ -> Флаги компиляции: добавьте это -std= C++11 Это сработало для меня.

Я могу подтвердить, что проблема в том, что ваш компилятор не использует режим C++11. При компиляции кода с помощью Clang 3.4.1 без-std=c++11 Я получаю те же 4 ошибки, что и вы, но эта командная строка:

 c++ -stc=c++11 -c -Wall -pedantic foo.cpp

дает только это предупреждение:

предупреждение: неиспользуемая переменная 'z' [-Wunused-variable]
комплекс z = 1;

Другие вопросы по тегам