Как мне правильно инициализировать структура C из C ++?

у меня есть следующий код в файле C ++:

#include <sys/socket.h>

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

Когда я компилирую с g ++ с использованием -Wall -Wextra , я получаю предупреждения:

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

Моя проблема заключается в следующем: я не могу явно инициализировать все поля, потому что я не знаю, какие поля будут существовать (кросс-платформенные) в структуре struct msghdr . У структуры нет конструктора по умолчанию, поскольку это структура C. У меня сложилось впечатление, что форма = {0} привела к нулевой инициализации всех полей (что было бы хорошо для меня), но сообщение об ошибке g ++ говорит об обратном.

Какие у меня здесь варианты?

7
задан Tim Martin 24 January 2011 в 13:38
поделиться