Heim >Backend-Entwicklung >C++ >Wie behebt man den Fehler „Erwarteter konstanter Ausdruck' beim Deklarieren von Arrays in C?

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

Linda Hamilton
Linda HamiltonOriginal
2024-10-25 13:04:03638Durchsuche

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

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>

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>

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!

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