Maison >développement back-end >C++ >Pourquoi certains compilateurs C acceptent-ils les tableaux de longueur variable (VLA) malgré l'interdiction standard ?
Acceptation par le compilateur des tableaux de longueur variable (VLA) en C
Malgré l'absence de tableaux de longueur variable (VLA) dans la norme C, les compilateurs comme g et clang acceptent étonnamment la syntaxe VLA. Cela a soulevé des questions sur le comportement du compilateur et les implications de cette fonctionnalité non standard.
Tolérance du compilateur
L'acceptation des VLA par le compilateur découle de sa conception inhérente. GCC, en particulier, donne la priorité à la compatibilité avec les anciens compilateurs C, lui permettant de reconnaître la syntaxe VLA même si elle ne fait techniquement pas partie du standard C.
Position standard
La La grammaire C spécifie que les tailles de tableau doivent être des expressions constantes. Étant donné que les VLA utilisent des expressions variables, ils enfreignent cette règle et ne sont donc pas considérés comme faisant partie de la norme C.
Implémentation du compilateur
Les VLA dans les compilateurs C sont implémentés en tant qu'extensions du compilateur. . Le compilateur les gère en allouant le tableau sur la pile pendant l'exécution, comme un tableau normal. Cependant, la norme ne définit pas ce comportement, il est donc sujet à variation selon les différents compilateurs.
Conséquences
L'utilisation des VLA en C introduit plusieurs implications :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!