VS 2012 Ultimate update 4将无法编译阵列

时间:2014-03-08 18:22:53

标签: c++ arrays visual-studio-2012 c++11 compiler-errors

所以这就是问题所在。我是新手,但是相同的代码在VS express 2013上运行得很好。我已经搜索过高低,向地板捐赠了一点以上的头发,用键盘反复威胁屏幕,并禁用了我的所有扩展无济于事:

代码:

    #include <iostream>

    using namespace std;

    int main () {
        double num;
        double arRate [] {2.2, 4.4, 7.4, 9.6}, arWeight [] {2, 6, 10, 20};
        num = 5.2;
        cout << num << endl;
        return 0;
    }

错误列表:

  

错误1错误C2601:'arRate':本地函数定义是非法的LINE 7

     

错误2错误C2143:语法错误:缺少';'在'}'LINE 7

之前      

错误3错误C2143:语法错误:缺少';'之前','LINE 7

     

错误4错误C2143:语法错误:缺少';'在'{'LINE 7

之前      

错误5错误C2065:'num':未声明的标识符LINE 8

     

错误6错误C2065:'num':未声明的标识符LINE 9

     

7智能感知:不允许使用不完整类型第7行

     

8智能感知:预期';'第7行

2 个答案:

答案 0 :(得分:4)

您可以转到Support For C++11 Features (Modern C++)查看C ++ 11不同版本的Visual Studio支持哪些部分。

我们可以看到Initializer lists在2012年不支持,但在2013年得到支持。所以在这种情况下你只需使用2013.

您也可以使用=语法:

double arRate [] = {2.2, 4.4, 7.4, 9.6}, arWeight [] = {2, 6, 10, 20};
                 ^                                   ^

在C ++ 11之前运行良好

答案 1 :(得分:2)

适当的数组初始化语法:

double array_name[] = {/* values */};

您缺少=或赋值运算符。