据this answer,其中规定:为什么C++函数可以创建可变长度的数组?
编译器知道int型的大小,因此可以产生 正确的汇编指令,将为了让富住在那里 堆栈上保留足够的空间。
编译器需要知道函数在堆栈上占用的大小才能实现它。
那么,为什么这个代码编译?
int f(int n)
{
int x[n];
}
int main()
{
f(3);
f(5);
//etc
}
x
是一个整数数组,但它的尺寸不是恒定的,它可以改变的任何时间被调用的函数。
我在这里错过了什么?
用'-pedantic'再次编译它。 – chris 2013-04-08 19:39:06
“erw.cpp:In function'int f(int)': erw.cpp:3:12:warning:ISO C++禁止变长数组'x'[-Wvla]” - @chris:谢谢,这很有道理现在。 – corazza 2013-04-08 19:40:36
[在C++书中,数组绑定必须是常量表达式,但为什么下面的代码有效?](http://stackoverflow.com/questions/5947661/in-c-books-array-bound-must-be -constant-expression-but-why-the-following-cod) – 2013-04-08 19:58:07