【发布时间】:2016-04-28 15:23:20
【问题描述】:
在 Gcc 4.8.2 及之前的版本中,以下代码无法编译,因为数组大小不是编译时间常数。
#include<iostream>
using namespace std;
int f(){return 10;}
int main()
{
int i=10;
int arr[f()]={}; //error
}
当我尝试在 4.9 及更高版本上运行类似代码时,相同的代码已成功编译。
是编译器允许这样的代码还是现在是标准的一部分?
注意:以上代码在 clang 3.7.1
之前无法编译【问题讨论】:
-
这是 C 还是 C++? VLA 只是其中之一的标准。 GCC 无论如何都支持它们。
-
它是一个变长数组,vla,语言是什么很重要,请选择一个