【发布时间】:2019-06-12 05:48:47
【问题描述】:
我正在使用 Visual Studio 2013 Express 和 MSVC 编译器。
执行以下代码行时出现错误。
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int a[n];
return 0;
}
它说表达式在我声明数组a 的行上必须有一个常量值。
我搜索并找到了这个c++ array - expression must have a constant value
它说您需要打开编译器选项以允许它。 如何在 Visual Studio Express 中设置该选项?
【问题讨论】:
-
使用标准且可移植的
std::vector,而不是非标准且不可移植的variable-length arrays。 -
@Someprogrammerdude 但是使用向量会将其分配在堆而不是堆栈上。将编译器更改为 gcc 是否允许我对数组进行动态大小分配?
-
可变长度数组是一个有争议的 C99 特性,C11 不得不再次将其设为可选。它不是 C++ 功能,MSVC++ 根本没有实现它。不可移植的替代方案是
_malloca(),旨在防止当您分配过多时此站点被命名为运行时事故。 -
@Raj HERE 你可以找到各种各样的信息为什么你不应该按照你的计划去做=)
标签: c++ arrays visual-c++ dynamic