定义非constexpr大小的数组时没有错误

时间:2013-01-27 14:25:24

标签: c++

  

可能重复:
  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)

2 个答案:

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