Nei libri C ++, l’array associato deve essere un’espressione costante, ma perché funziona il seguente codice?

#include  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; } 

ha funzionato bene in Xcode4 sotto Mac

come detto nei libri, dovrebbe essere sbagliato, perché?

così confuso ~

Questa è una caratteristica C99 chiamata VLA che alcuni compilatori consentono anche in C ++. È l’allocazione in pila, proprio come sarebbe con int a[10] .

Questa è la caratteristica C99 che consente VLA (array a lunghezza variabile).

g++ -pedantic con g++ -pedantic , sono sicuro che non si sarebbe compilato.