main()
{
int i=256;
char buf[i];
}
在 g++ 上完美编译,但在 visual studio 8 上出错。
谁知道为什么会这样
谢谢
最佳答案
在 C++ 中,数组的大小是固定的。然而,在 C99 中,存在称为可变长度数组或 VLA 的东西。这就是您在这里所做的。
g++
(C++ 编译器)是 gcc
(C 编译器)的兄弟,g++
允许您使用 C99特性,而 VS 没有这样的东西。本质上它是一个非标准的 C++ 扩展。
如果您将 i
设置为编译时常量,它就可以工作(因为这是标准的 C++):
const int i = 256; // obviously cannot change at runtime.
如果您需要 C++ 中的动态数组,请使用 std::vector
.
请注意,在 C++ 中,您需要为 main
指定返回类型。这是并将始终是 int
。
关于c++ - 运行时在栈上动态分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2489970/