Ist eine leere Initialisierungsliste ein gültiger C-Code?

Es ist üblich zu verwenden{0} zu initialisieren astruct oder einarray Betrachten Sie jedoch den Fall, dass das erste Feld kein Skalartyp ist. Wenn das erste Feld vonstruct Person ist ein andererstruct oder Array, dann führt diese Zeile zu einem Fehler (error: missing braces around initializer).

struct Person person = {0};

Zumindest erlaubt mir GCC, eine leere Initialisierungsliste zu verwenden, um dasselbe zu erreichen

struct Person person = {};

Aber ist das gültiger C-Code?

Außerdem: Gibt diese Zeile garantiert dasselbe Verhalten aus, d. H. Eine Null-Initialisierungstruct?

struct Person person;

Antworten auf die Frage(2)

Ihre Antwort auf die Frage