¿Cómo debo inicializar correctamente una estructura C desde C ++?

Tengo el siguiente código en un archivo C ++:

#include <sys/socket.h>

// ...
void someFunc() {
    struct msghdr msg = {0};  // <<< Uninitialized member here
}

Cuando compilo cong++ utilizando-Wall -Wextra, Recibo advertencias:

error: missing initializer for member 'msghdr::msg_namelen'
...same for several other fields

Mi problema es este: no puedo inicializar explícitamente todos los campos, porque no sé qué campos existirán (multiplataforma) en unstruct msghdr. La estructura no tiene un constructor predeterminado, ya que es una estructura C. Tenía la impresión de que el= {0} La forma condujo a la inicialización cero de todos los campos (lo que estaría bien para mí), pero elg++ mensaje de error sugiere no.

¿Cuáles son mis opciones aquí?

Respuestas a la pregunta(5)

Su respuesta a la pregunta