据我所知,这段代码不是标准的有效 C++ 代码:
int a = 5;
int b[a];
但似乎许多编译器都可以编译该代码(主要是带有警告)并且它的行为符合预期。我错了吗,是编译器对我好吗?
最佳答案
它被称为可变长度数组 (VLA),这是标准 C++ 和任何版本的 C++ 所不允许的,尽管一些 GCC 支持它作为扩展。
如果你使用的是 GCC,那么
- 用
-pedantic
选项编译它,你会看到警告。 - 用
-pedantic -Werror
选项编译它,你会看到警告变成了错误。
VLA 只被 C99 允许,但其他版本的 C 不允许。
关于c++ - 在 C++ 中创建具有非常量长度的数组时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8239001/