Question

J'avais toujours pensé que les tableaux de longueur variable n'étaient pas autorisés dans C ++ (voir: Pourquoi Aren 'Tareaux de longueur variable de la norme C ++? ) .Mais que ce code compile et travaille-t-il?

#include <iostream>
using namespace std;

int main () {

    int n;
    cin >> n;

    int a[n];

    for (int i=0; i<n; i++) {
        a[i] = i;
    }

    for (int i=0; i<n; i++) {
        cout << a[i] << endl;
    }
}

Était-ce utile?

La solution

La norme C ++ actuelle ne nécessite pas que les compilateurs VLAS.Cependant, les fournisseurs de compilation sont autorisés à prendre en charge les VLA comme une extension.

Il a été proposé à l'origine que les VLAS apparaissent dans C ++ 14, mais la proposition n'a pas réussi.Ils peuvent revenir pour C ++ 17.

Autres conseils

C99 permet une VLA, mais C ++ ne le permet jamais, car la performance de la VLA est si hostile.Et en C11, VLA devient une fonctionnalité facultative.

Avant, on dit que la VLA apparaîtrait à C ++ 17.Mais maintenant C ++ 17 est publié et pas de VLA non plus.(Et il semble que c ++ 20 n'aura pas de VLA. Les documents récents n'en ont pas parlé du tout.)

Bien que la standard ne le supporte pas, GNU Compiler le supporte comme une extension .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top