Es ist üblich, {0}
zu verwenden, um eine struct
oder zu initialisieren, aber bedenken Sie den Fall, wenn das erste Feld kein Skalartyp ist. Wenn das erste Feld von struct Person
ein anderes struct
oder Array ist, wird diese Zeile zu einem Fehler führen (error: missing braces around initializer
).Ist eine leere Initialisierungsliste ein gültiger C-Code?
struct Person person = {0};
Mindestens GCC ermöglicht es mir, eine leere Initialisiererliste zu verwenden, um die gleiche Sache
struct Person person = {};
Aber ist der gültige C-Code zu erreichen?
Auch: Ist diese Linie garantiert das gleiche Verhalten, d. H. Eine Null-Initialisierung struct
?
struct Person person;
Wenn Sie nach etwas benig gültiges C fragen, warum wird es als C++ markiert? – PlasmaHH
C sollte die Initialisierung von nichts außer 'statischen' Variablen nicht garantieren, aber ich werde hier in Wikipedia einen einzigen Satz abbrechen. – millimoose
Ich könnte hinzufügen, dass ich meinen Code mit GCC-Optionen pedantisch und Warnungen-als-Fehler gebaut. Andere Compiler oder Konfigurationen erlauben möglicherweise die erste Syntax. –