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
Barbara Streisandoriginal
2024-12-26 04:58:13345parcourir

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!

Déclaration:
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