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

No error when defining an array of non-constexpr size

本文关键字:数组 有错误 constexpr 定义      更新时间:2023-10-16

可能的重复项:
在C++书中,数组绑定必须是常量表达式,但为什么下面的代码有效?

我在main()中执行此操作:

int i = 2; //not constant expression
int foo[i]; //no error?

这不会给我一个错误,因为它应该根据我的书。为什么?

(我在叮当3.1)

在启用严格警告的情况下编译它。
-pedantic如果您使用 gcc,它会给您一个错误。

大多数编译器通过语言扩展支持可变长度数组 (VLA)。但是,C++语言标准不支持VLA作为语言的一部分。

ISO C99 中允许使用可变长度的自动数组...有关更多详细信息,请查看 http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Variable-Length.html#Variable-Length