Czy pusta lista inicjalizatora jest prawidłowym kodem C?

Jest powszechne w użyciu{0} zainicjować astruct lubarray ale rozważmy przypadek, gdy pierwsze pole nie jest typem skalarnym. Jeśli pierwsze polestruct Person jest innystruct lub tablica, to linia spowoduje błąd (error: missing braces around initializer).

struct Person person = {0};

Przynajmniej GCC pozwala mi używać pustej listy inicjalizatora do wykonania tego samego

struct Person person = {};

Ale czy to jest prawidłowy kod C?

Ponadto: Czy ta linia gwarantuje takie samo zachowanie, tzn. Inicjalizację zerowąstruct?

struct Person person;

questionAnswers(2)

yourAnswerToTheQuestion