Maison > développement back-end > C++ > Comment corriger l'erreur « Expression constante attendue » lors de la déclaration de tableaux en C ?

Comment corriger l'erreur « Expression constante attendue » lors de la déclaration de tableaux en C ?

Linda Hamilton
Libérer: 2024-10-25 13:04:03
original
703 Les gens l'ont consulté

How to Fix the

Résolution de l'erreur « Expression constante attendue » pour la taille du tableau

Considérez le code C suivant :

<code class="cpp">int count = 0;
float sum = 0;
float maximum = -1000000;

std::ifstream points;

int size = 100;
float x[size][2]; // <<< Error
Copier après la connexion

Ceci le code génère une erreur « expression constante attendue » lors de la déclaration du tableau x. Cette erreur se produit car C nécessite que les tailles de tableaux non statiques soient connues au moment de la compilation.

Solution utilisant des vecteurs

Pour résoudre ce problème, nous pouvons utiliser un vecteur C au lieu d'un tableau :

<code class="cpp">std::vector<std::array<float, 2>> x(size);</code>
Copier après la connexion

Solution utilisant new

Une autre approche consiste à allouer dynamiquement le tableau à l'aide de l'opérateur new :

<code class="cpp">float (*px)[2] = new float[size][2];</code>
Copier après la connexion

Solutions alternatives

  • Utiliser Boost : si vous avez accès à la bibliothèque Boost, vous pouvez utiliser boost::array au lieu de std::array.
  • Définir Type de tableau personnalisé : définissez un type de tableau personnalisé qui prend en charge le dimensionnement dynamique et utilisez-le dans un vecteur.

Considérations pour les compilateurs non C 11

Si vous Si vous n'avez pas de support C 11, utilisez les techniques suivantes :

  • Utilisez un modèle d'identité pour simplifier la syntaxe lors de l'utilisation de new.
  • Utilisez un vecteur de std::pair comme alternative à la solution vectorielle mentionnée précédemment.

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 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