VS中C中可变大小的数组

时间:2016-04-16 10:39:58

标签: c arrays static

根据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中,前者也无法编译成功。我该如何解决这个问题? 是否有办法改变后者以使其成功编译?

2 个答案:

答案 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;
}