Dans les livres C ++, les tableaux liés doivent être des expressions constantes, mais pourquoi le code suivant fonctionne-t-il?

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

a bien fonctionné sous Xcode4 sous Mac

comme dit dans les livres, ça devrait être faux, pourquoi?

tellement confus ~

Cette fonctionnalité aa C99 appelée VLA, que certains compilateurs permettent également en C ++. C’est l’allocation sur la stack, comme ce serait le cas avec int a[10] .

C’est la fonctionnalité C99 qui autorise VLA (tableau de longueur variable).

Comstackz-le avec g++ -pedantic , je suis sûr que cela ne comstackrait pas.