我正在使用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中设置该选项?
答案 0 :(得分:4)
您可以使用指针
import text from './data/text.txt';
console.log(text); // This line will print out the content of the text file in the console
您必须先删除,然后才能退出int*a = new int [n];
的范围:
a
但是最好使用向量:
delete[] a;
您还可以使用llvm smallvector,如果大小较小,则该llvm smallvector针对没有堆分配的小型阵列进行了优化
vector<int> a(n);
但是请记住,编译器将决定在哪里分配。 Smallvector
答案 1 :(得分:0)
尝试以下操作:
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int *a=new int[n];
delete[] a;
return 0;
}
将其分配到堆栈上的方式必须是常量,而必须在堆上分配,并且可以是任意值。
我认为没有编译器选项可以更改