Tworzę rodzaj nakładki na program. Do uruchomienia programu używam wywołania CreateProcess()
, które między innymi otrzymuje wskaźnik do STARTUPINFO
struktury. Aby zainicjować strukturę, którą robiłem:
STARTUPINFO startupInfo = {0}; // Or even '\0'.
startupInfo.cb = sizeof(startupInfo);
Podczas kompilowania programu z GCC włączającym te zestawy ostrzeżeń -Wall -Wextra
daje mi ostrzeżenie, że brakuje inicjalizatora wskazującego na pierwszą linię.
warning: missing initializer
warning: (near initialization for 'startupInfo.lpReserved')
Więc skończyło się na zrobieniu:
STARTUPINFO startupInfo;
memset(&startupInfo, 0, sizeof(startupInfo));
startupInfo.cb = sizeof(startupInfo);
W ten sposób kompilator nie daje żadnego ostrzeżenia. Pytanie brzmi, jaka jest różnica między tymi sposobami inicjalizacji struktury? Czy przy użyciu pierwszej metody struktura nie została zainicjowana? Który byś polecił?
struct struct_with_four_fields x = {1, 2, 3};
tylko 3 z 4 członków są inicjowane.