Heim > Backend-Entwicklung > C++ > Hauptteil

Wie behebt man den Fehler „Erwarteter konstanter Ausdruck' beim Deklarieren von Arrays in C?

Linda Hamilton
Freigeben: 2024-10-25 13:04:03
Original
543 Leute haben es durchsucht

How to Fix the

Fehler „Erwarteter konstanter Ausdruck“ für Array-Größe beheben

Bedenken Sie den folgenden C-Code:

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

std::ifstream points;

int size = 100;
float x[size][2]; // <<< Error
Nach dem Login kopieren

Dies Code löst beim Deklarieren des Arrays x den Fehler „Erwarteter konstanter Ausdruck“ aus. Dieser Fehler tritt auf, weil C erfordert, dass nicht-statische Array-Größen zur Kompilierungszeit bekannt sind.

Lösung mit Vektoren

Um dieses Problem zu beheben, können wir einen C-Vektor verwenden anstelle eines Arrays:

<code class="cpp">std::vector<std::array<float, 2>> x(size);</code>
Nach dem Login kopieren

Lösung mit new

Ein anderer Ansatz besteht darin, das Array dynamisch mit dem new-Operator zuzuweisen:

<code class="cpp">float (*px)[2] = new float[size][2];</code>
Nach dem Login kopieren

Alternative Lösungen

  • Boost verwenden: Wenn Sie Zugriff auf die Boost-Bibliothek haben, können Sie boost::array anstelle von std::array verwenden.
  • Definieren Benutzerdefinierter Array-Typ: Definieren Sie einen benutzerdefinierten Array-Typ, der dynamische Größenanpassung unterstützt, und verwenden Sie ihn in einem Vektor.

Überlegungen für Nicht-C 11-Compiler

Wenn Sie Wenn Sie keine C 11-Unterstützung haben, verwenden Sie die folgenden Techniken:

  • Verwenden Sie eine Identitätsvorlage, um die Syntax zu vereinfachen, wenn Sie new verwenden.
  • Verwenden Sie einen Vektor von std::pair als Alternative zur zuvor erwähnten Vektorlösung.

Das obige ist der detaillierte Inhalt vonWie behebt man den Fehler „Erwarteter konstanter Ausdruck' beim Deklarieren von Arrays in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!