在C++书籍中,数组绑定必须是常量表达式,但为什么以下代码有效?

f1c*_*hen 9 c++

#include <iostream>
using namespace std;

int main(){
    int n=10;
    int a[n];

    for (int i=0; i<n; i++) {
        a[i]=i+1;
        cout<<a[i]<<endl;
}
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在Mac下的Xcode4中运行良好

如书中所说,这应该是错的,为什么?

好糊涂〜

Eri*_*rik 6

这是一个名为VLA的 C99特性,一些编译器也允许在C++中使用.这是在堆栈上的分配,就像它一样int a[10].


Naw*_*waz 5

这是允许VLA(可变长度数组)的C99功能.

编译它g++ -pedantic,我敢肯定不会编译.