【发布时间】:2020-03-20 10:29:45
【问题描述】:
#include <iostream>
using namespace std;
void aa(int n) {
int test[n] = {0};
}
int main() {
aa(10);
return 0;
}
得到了
error: variable-sized object may not be initialized
但是
#include <iostream>
using namespace std;
void aa(int n) {
int test[n];
fill(test,test+10,0);
}
int main() {
aa(10);
return 0;
}
没问题
我想知道这个编译失败的原因。
【问题讨论】:
-
您使用的是哪个编译器版本?
-
Apple LLVM 版本 10.0.0 (clang-1000.10.44.2) @Evg
-
onlinegdb.com/SkNQ2eKhB 第一个代码也可以工作
-
都不合法,因为 n 不是编译时间常数
-
您可能想改用std::vector 和resize。
标签: c++ arrays stack clang++ variable-length-array