Maison >développement back-end >C++ >Les compilateurs C acceptent-ils les tableaux de longueur variable (VLA) et si oui, pourquoi ?
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.
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.
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.
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.
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!