C ++数组Visual Studio 2010 vs Bloodshed Dev-C ++ 4.9.9.2

时间:2011-05-01 19:20:39

标签: c++ visual-studio arrays input dev-c++

此代码在Bloodshed Dev-C ++ 4.9.9.2中编译良好,但在Visual Studio 2010中我收到错误:表达式必须具有常量值。如何在用户输入有关数组大小而不使用指针的情况下创建数组?

#include <cstdlib>
#include <iostream>
using namespace std;

int main()
{
    int size = 1;
    cout << "Input array size ";
    cin >> size;
    int array1[size];
    system("PAUSE");
    return 0;
}

3 个答案:

答案 0 :(得分:3)

使用std::vector代替数组(无论如何通常都是个好主意):

std::vector<int> array1(size);

如果您关心,您所看到的差异不是来自Dev-C ++本身,而是来自gcc / g ++。您正在使用的是C ++的非标准扩展,g ++恰好实现,但VC ++没有。

答案 1 :(得分:0)

使用变量调整自动数组大小的能力是C的一部分,不是C ++的一部分,并且是GCC似乎想要强加给我们所有人的扩展。 DevC ++是cr * p的一个邪恶的部分,虽然它在这里没有错。改变(这完全是GCC的做法) - 我无法想象为什么你(或其他任何人)想要使用它。

你应该用GCC编译你的C ++代码,并用标志警告你这样的事情。我建议-Wall和-pedantic作为最低限度。

答案 2 :(得分:-1)

int array1 = new int[size];

将会工作,我相信(自从我上次接触C ++以来已经过了一个月或3个月)

但实际上,如果使用C ++,那么选择std :: vector会更灵活。