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
Linda Hamiltonoriginal
2024-10-25 13:04:03638parcourir

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

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>

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>

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