Frage

Ich hatte immer gedacht, dass die Arrays mit variabler Länge in C ++ nicht erlaubt waren (siehe: , warum Aren 't Variable-Länge-Arrays-Teil des C ++ - Standards? ). Aber warum ist dieser Code kompiliert und funktioniert?

generasacodicetagpre.

War es hilfreich?

Lösung

Der aktuelle C ++ - Standard erfordert nicht, dass Compiler VLAS.Compiler-Anbieter dürfen jedoch VLAS als Erweiterung unterstützen.

Es wurde ursprünglich vorgeschlagen, dass Vlas in C ++ 14 erscheinen würden, aber der Vorschlag gelang jedoch nicht.Sie können für C ++ 17 zurückkehren.

Andere Tipps

c99 Erlaubt VLA, aber C ++ erlaubt niemals, dass die Leistung von VLA so unfreundlich ist.Und in C11 wird VLA zur optionalen Funktion.

vorher heißt, dass VLA bei C ++ 17 erscheinen würde.Aber jetzt wird C ++ 17 veröffentlicht, und auch keine VLA.(Und es scheint, dass C ++ 20 keine VLA hat. Die jüngsten Dokumente haben überhaupt nicht darüber gesprochen.)

Obwohl der Standard nicht unterstützt, unterstützt GNU-Compiler es als -Verweiterung .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top