我是 Bjarne 的书 C++11 版编程和自学 C++ 的新手。我将 Coderunner 2 与安装在 OS X El Cap 上的 Xcode 命令行工具一起使用。使用初始值设定项列表创建变量时,出现以下代码错误。我的信念是 Coderunner 没有运行 c++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.

最佳答案

C++11 不是默认值。使用 clang++,在 C++11 中编译需要以下内容:

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

在 Coderunner 2 中,您需要通过包含上述内容来修改与 c++ 相关的脚本。转到 Coderunner > Preferences,然后为 Language 选择 C++ 并单击“Edit Script”:

Coderunner - Preferences

您将在 Coderunner 中看到“compile.sh”文件。修改第 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}"

希望有帮助!感谢 Serge Ballesta 为我指明了正确的方向。

关于c++ - Coderunner 2 - 初始化列表错误 - C++11,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32981585/

10-11 04:24