为什么这段代码在使用变量数组大小时不会产生错误?

v01*_*dya 7 c++ gcc variable-length-array

下面的代码应该生成错误,因为在编译期间编译器无法知道数组大小.

int f;
std::cin >> f;
int c[f];
c[100] = 5;
Run Code Online (Sandbox Code Playgroud)

我正在使用gcc(Ubuntu 4.8.2-19ubuntu1)4.8.2进行编译,它不仅仅是编译,而是以某种方式运行.

怎么会发生?

BoB*_*ish 13

C99接受可变长度数组,gcc接受它们作为C90和C++中的扩展.

在C++代码中使用-pedantic-Wvla将其转换为警告,并将-Werror=vla其转换为错误.