Maison >développement back-end >C++ >Pourquoi les compilateurs C acceptent-ils les VLA malgré l'interdiction standard ?
VLA en C : acceptation du compilateur malgré une fonctionnalité non standard
Les tableaux de longueur variable (VLA), introduits dans C99, ne sont pas officiellement pris en charge en C. Pourtant, des compilateurs tels que g et clang autorisent étonnamment les déclarations VLA, tout en générant des avertissements lorsque l'indicateur -pedantic est activé.
Acceptation du compilateur
L'acceptation des VLA par le compilateur découle de son adhésion à un héritage de comportement du compilateur C. GCC, en particulier, maintient la compatibilité avec les anciens compilateurs C qui autorisaient les VLA.
Implications standard
Malgré l'acceptation du compilateur, C interdit explicitement les VLA dans la grammaire de déclaration de tableau dans [dcl.array] : seules les expressions constantes peuvent être utilisées comme spécificateurs de taille de tableau. Dans votre exemple, n ne répond pas à cette exigence.
Implémentation du compilateur
Bien que la norme interdise les VLA, les compilateurs qui les prennent en charge le font via des extensions. Les détails spécifiques de l'implémentation varient en fonction du compilateur. Dans le cas de g et clang , par exemple, les VLA sont implémentés sous forme de tableaux normaux sur la pile, avec leurs tailles allouées dynamiquement pendant l'exécution.
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!