у меня есть следующий код в файле 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 ++
говорит об обратном.
Какие у меня здесь варианты?