Array-Größenverwechslung verursacht Fehler
Beim Deklarieren eines Float-Arrays mit einer dynamischen Größe, wie zum Beispiel:
<code class="cpp">int size = 100; float x[size][2];</code>
Möglicherweise tritt der Fehler „Erwarteter konstanter Ausdruck“ auf. Dies liegt daran, dass C erfordert, dass Arrays zur Kompilierungszeit feste Größen haben, die nicht während der Laufzeit bestimmt werden. Die Größenvariable hier kann nicht als gültige Array-Dimension verwendet werden.
Lösung mit Vektor
Um dieses Problem zu vermeiden, sollten Sie die Verwendung eines Vektors in Betracht ziehen:
<code class="cpp">std::vector<std::array<float, 2>> x(size);</code>
Dadurch wird ein Vektor von Arrays erstellt, wobei jedes Array zwei Floats enthält.
Alternative Lösungen
Alternativ können Sie die Rohspeicherzuweisung mit new verwenden oder Ihre eigene erstellen Array-Typ:
<code class="cpp">// With new float (*px)[2] = new float[size][2]; // With custom array type template<typename T, size_t N> struct array { T data[N]; }; array<float, 2> myArray[size];</code>
Zusätzliche Optionen
Weitere Optionen umfassen die Verwendung eines Vektors von Paaren oder das Rollen Ihres eigenen Array-Typs mit Syntaxhilfen:
<code class="cpp">// Vector of pairs std::vector<std::pair<float, float>> x(size); // Custom array type template<typename T> struct identity { typedef T type; }; using FloatArray2 = identity<float[2]>::type; FloatArray2 myArray[size];</code>
Das obige ist der detaillierte Inhalt vonWarum führt die Deklaration eines Float-Arrays mit einer dynamischen Größe zu einem Fehler „Erwarteter konstanter Ausdruck' in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!