C++ array Visual Studio 2010 vs Bloodshed Dev-C++ 4.9.9.2



这段代码在流血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;
}

使用std::vector代替数组(通常是个好主意):

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

如果你在意的话,你看到的差异不是来自dev - c++本身,而是来自gcc/g++。你正在使用的是c++的一个非标准扩展,g++碰巧实现了,但vc++没有。

使用变量自动调整数组大小的能力是C的一部分,而不是c++的一部分,并且是GCC似乎想要强加给我们所有人的扩展。devc++是一种邪恶的代码,尽管它在这里没有错。为了改变(这完全是GCC做的)-我无法想象为什么你(或任何人)想要使用它。

你真的应该用带有警告标志的GCC来编译你的c++代码。我建议-Wall和-pedantic作为最小值

int array1 = new int[size];

我相信

也能很好地工作(距离我上次接触c++已经有一三个月了)

但是,如果使用c++,使用std::vector,更灵活。

最新更新