¿Es una lista de inicialización vacía un código C válido?

Es comun de usar{0} para inicializar unstruct o unarray pero considere el caso cuando el primer campo no es un tipo escalar. Si el primer campo destruct Person es otrostruct o matriz, entonces esta línea dará como resultado un error (error: missing braces around initializer).

struct Person person = {0};

Al menos GCC me permite usar una lista de inicialización vacía para lograr lo mismo

struct Person person = {};

Pero, ¿es este código C válido?

También: ¿Se garantiza que esta línea dé el mismo comportamiento, es decir, una inicialización cero?struct?

struct Person person;

Respuestas a la pregunta(2)

Su respuesta a la pregunta