Maison >développement back-end >C++ >Les compilateurs C acceptent-ils les tableaux de longueur variable (VLA) et si oui, pourquoi ?

Les compilateurs C acceptent-ils les tableaux de longueur variable (VLA) et si oui, pourquoi ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-21 03:42:13981parcourir

Do C   Compilers Accept Variable Length Arrays (VLAs), and If So, Why?

Acceptation par le compilateur C des tableaux de longueur variable (VLA)

Bien que les VLA aient été standardisés dans C99, ils ne font pas partie de la norme C. Néanmoins, les compilateurs comme g et clang acceptent les déclarations VLA avec un avertissement sous l'indicateur -pedantic.

Acceptation du compilateur

Les compilateurs ont la flexibilité d'inclure des fonctionnalités non standard pour maintenir la compatibilité avec le code existant ou pour améliorer la commodité du programmeur. Dans ce cas, les auteurs du compilateur ont choisi d'autoriser les déclarations VLA pour faciliter la migration de C99 vers C.

Interprétation standard

La norme C indique explicitement que les tableaux ne peuvent être déclarés qu'avec des tailles constantes. Les déclarations VLA, dont la taille n'est pas connue au moment de la compilation, violent cette règle et sont donc considérées comme illégales en C.

Implémentation du compilateur

Malgré l'interdiction de la norme, le compilateur traduit les VLA en code qui semble allouer de la mémoire sur la pile. Cependant, ce comportement n'est pas spécifié par le standard C et constitue uniquement un détail d'implémentation du compilateur.

Conclusion

Bien que les VLA offrent de la flexibilité dans certains scénarios, il est crucial de comprendre qu'ils ne le sont pas. partie de la norme C. Les compilateurs peuvent les accepter pour des raisons de compatibilité, mais leur utilisation doit être effectuée avec prudence et ne doit pas être invoquée dans un code conforme aux normes. Consultez toujours la documentation de votre compilateur pour connaître les fonctionnalités non standard spécifiques prises en charge.

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