Mam następujący kod w ++ pliku C:Jak poprawnie zainicjować C struct z C++?
#include <sys/socket.h>
// ...
void someFunc() {
struct msghdr msg = {0}; // <<< Uninitialized member here
}
Kiedy skompilować z g++
użyciu -Wall -Wextra
, dostaję ostrzeżenia:
error: missing initializer for member 'msghdr::msg_namelen'
...same for several other fields
Mój problem jest taki: Nie mogę jawnie zainicjować wszystko pola, ponieważ nie wiem, jakie pola będą istnieć (między platformami) w struct msghdr
. Struktura nie ma domyślnego konstruktora, ponieważ jest to struktura C. Miałem wrażenie, że formularz = {0}
doprowadził do zerowej inicjalizacji wszystkich pól (co byłoby dla mnie w porządku), ale komunikat o błędzie g++
sugeruje, że nie.
Jakie są moje opcje?
możliwy duplikat [Dlaczego kompilator rzuca to ostrzeżenie: "brak inicjatora"? Czy struktura nie została zainicjowana?] (Http://stackoverflow.com/questions/1538943/why-is-tiler-throwing-this-warning-missing-initializer-isnt-the-stru) – ergosys