Maison > développement back-end > C++ > Pouvez-vous utiliser des variables non constantes pour déclarer la taille des tableaux en C ?

Pouvez-vous utiliser des variables non constantes pour déclarer la taille des tableaux en C ?

Linda Hamilton
Libérer: 2024-11-02 11:56:31
original
960 Les gens l'ont consulté

Can You Use Non-Constant Variables to Declare Array Sizes in C  ?

Déclaration de taille de tableau avec des variables non constantes

Contrairement à la notion largement acceptée selon laquelle les tailles de tableau en C doivent être des entiers constants, des observations récentes ont révélé que certains compilateurs permettent une plus grande flexibilité à cet égard. Alors que la norme C impose que les limites des tableaux doivent être des expressions constantes, GCC a introduit une extension qui permet l'utilisation de variables non constantes dans les déclarations de taille de tableau.

Considérez l'exemple suivant :

<code class="c++">int ArraySize = 5;
int MyArray[ArraySize];</code>
Copier après la connexion

En standard C , ce code générerait une erreur du compilateur car ArraySize n'est pas une constante. Cependant, GCC le compile volontiers sans aucun problème.

Pour comprendre ce comportement, il est essentiel de reconnaître que l'extension de GCC est un écart par rapport à la norme C. L'extrait de "The C Programming Language" de Bjarne Stroustrup indique explicitement que les limites des tableaux doivent être des expressions constantes.

Malgré cela, l'extension de GCC fournit un moyen pratique d'allouer dynamiquement des tableaux au moment de l'exécution. On pourrait affirmer que cette flexibilité se fait au détriment de la portabilité, car le code qui repose sur l'extension de GCC peut ne pas être compilé sur d'autres compilateurs C conformes.

Si la portabilité est un problème, GCC propose des options pour faire respecter la conformité aux normes. Passer l'indicateur -pedantic lors de la compilation entraîne un avertissement pour les déclarations de taille de tableau non constante, et -std=c 98 le traite comme une erreur. Ces options donnent la priorité au strict respect de la norme C plutôt qu'à la commodité d'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