У меня есть следующий код в файле 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++
не предполагает.
Какие у меня варианты?
Возможный дубликат [Почему компилятор бросает это предупреждение: «Отсутствует инициализатор»? Не инициализирована ли структура?] (Http://stackoverflow.com/questions/1538943/why-is-the-compiler-throwing-this-warning-missing-initializer-isnt-the-stru) – ergosys