Heim > Backend-Entwicklung > C++ > Entsprechen Arrays variabler Länge in C dem Standard?

Entsprechen Arrays variabler Länge in C dem Standard?

Susan Sarandon
Freigeben: 2024-12-12 20:53:12
Original
465 Leute haben es durchsucht

Do Variable-Length Arrays in C   Conform to the Standard?

Arrays variabler Länge in C: Konstanz und Standardkonformität untersuchen

Der folgende C-Codeausschnitt hat Fragen dazu aufgeworfen, ob er der Sprache entspricht Standard, insbesondere in Bezug auf konstante Ausdrücke:

int main()
{
  int size = 10;
  int arr[size];
}
Nach dem Login kopieren

Im C-Standard (8.3.4/1) Die Größe eines Arrays muss ein „ganzzahliger konstanter Ausdruck“ sein. Im obigen Beispiel scheint der Größe diese Eigenschaft zu fehlen.

Arrays mit variabler Länge (VLA) und Kompilierungsstatus

Der Code wird erfolgreich mit gcc 4.8 und Clang 3.2 kompiliert weil beide Compiler Variable-Length-Arrays (VLAs) als Erweiterung in C unterstützen. Visual Studio CTP lehnt den Code jedoch mit einer Fehlermeldung ab, die darauf hinweist, dass die Größe Null ist. Dieses Verhalten steht im Einklang mit dem C-Standard, der keine Arrays variabler Größe zulässt.

Compilerwarnungen und Spracherweiterungen

Einige Compiler, wie z. B. gcc und clang, Geben Sie Warnungen aus, wenn Sie VLAs mit dem Flag -pedantic verwenden. Dieses Flag warnt vor potenziell nicht standardmäßigen Funktionen und weist darauf hin, dass der Code gegen den C-Standard verstößt. In diesem Fall macht das Fehlen einer konstanten Größe für das Array die Verwendung von VLA ungeeignet.

Ganzzahlige konstante Ausdrücke

Ganzzahlige konstante Ausdrücke gemäß dem C-Entwurfsstandard (5.19 .3) müssen bestimmte Bedingungen erfüllen. In diesem Fall qualifiziert die Größe, die mit einem Literal initialisiert wird, als integralen konstanten Ausdruck. Um jedoch dem C-Standard zu entsprechen, sollte „const“ oder „constexpr“ verwendet werden, um es explizit als solches zu deklarieren:

const int size = 10;
Nach dem Login kopieren

oder

constexpr int size = 10;
Nach dem Login kopieren

Schlussfolgerung

Während Arrays variabler Länge Flexibilität bieten, muss ihre Verwendung gegen die Einhaltung von Standards abgewogen werden. Compiler wie Visual Studio halten sich an den C-Standard und lehnen Code ab, der gegen seine Regeln verstößt. Durch das Verständnis des Konzepts integraler konstanter Ausdrücke und die Berücksichtigung von Spracherweiterungen können Entwickler sicherstellen, dass ihr Code sowohl die Funktionalitäts- als auch die Standardisierungsanforderungen erfüllt.

Das obige ist der detaillierte Inhalt vonEntsprechen Arrays variabler Länge in C dem Standard?. 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