根据GCC 4.8.1
static int len = 10;
int main() {
int a[len];
return 0;
}
可以编译成功。
但如果像这样改变,编译将会失败:
static int len = 10;
int main() {
static int a[len];
return 0;
}
但是在我的Visual Studio中,前者也无法编译成功。我该如何解决这个问题?
是否有办法改变后者以使其成功编译?
答案 0 :(得分:1)
MSVC编译器仅支持C90,它不支持C99,可变长度数组是C99的一个功能。
见this;即使使用MSVC ++也不可能。
答案 1 :(得分:0)
Windows上的MSVC尚不支持VLA,因此您需要使用动态内存分配来生成数组:
static int len = 10;
int main() {
int *a = malloc(len * sizeof(int));
if (a == NULL) exit(1);
return 0;
}