Maison > développement back-end > C++ > Pourquoi les compilateurs C acceptent-ils les VLA malgré l'interdiction standard ?

Pourquoi les compilateurs C acceptent-ils les VLA malgré l'interdiction standard ?

Barbara Streisand
Libérer: 2024-12-26 04:58:13
original
325 Les gens l'ont consulté

Why Do C   Compilers Accept VLAs Despite Standard Prohibition?

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal