我想我的问题是以下是否有效C.
int main(void) {
int r = 3;
int k[r];
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果是这样,有人会解释为什么它在Microsoft的C编译器中不起作用,而在GCC中,以及它被添加到C标准时.
谢谢
它是当前MSVC不支持的GCC扩展。您可以在 MSVC 中相当轻松地用 _alloca(一种不需要程序员手动释放的堆栈分配)替换它:
#include <malloc.h>
...
int *k = (int *)_alloca(sizeof(*k)*r);
Run Code Online (Sandbox Code Playgroud)