可能重复:
In C++ books, array bound must be constant expression, but why the following code works?
我在main()中执行此操作:
int i = 2; //not constant expression
int foo[i]; //no error?
根据我的书,这不会给我一个错误。为什么呢?
(我在叮当3.1)
答案 0 :(得分:6)
在启用严格警告的情况下编译它。
-pedantic
如果您使用gcc,它会给您一个错误。
大多数编译器通过语言扩展支持可变长度数组(VLA)。但是,C ++语言标准不支持VLA作为语言的一部分。
答案 1 :(得分:0)
ISO C99允许使用可变长度自动数组...有关详细信息,请查看http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Variable-Length.html#Variable-Length