Frage

Das folgende Codezeile, die auf dem Stapel einen mit variabler Länge Array erzeugt:

char name[length] = {'\0'};

Erzeugt die folgende Compiler-Diagnose:

error: variable-sized object may not be initialized
warning: excess elements in array initializer
warning: (near initialization for ‘name’)

Welche Möglichkeiten stehen mir zur Verfügung für VLAs Initialisierung? Bin ich gezwungen, eine Linie zu verwenden, wie zum Beispiel:

memset(name, 0, sizeof(name));

Statt?

War es hilfreich?

Lösung

Ja, müssen Sie Code für die Initialisierung von VLAs schreiben (die ein memset() sein könnten, wie Sie beschrieben, oder jede andere Art und Weise, dass du dich auf).

Es ist einfach eine Einschränkung in dem C-Standard (§6.7.8):

  1. Die Art des Unternehmens initialisiert werden soll ein Array von unbekannt Größe oder ein Objekttyp, der ist kein Typ mit variabler Länge Arrays.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top