Я создаю своего рода интерфейс для программы. Для запуска программы я использую вызов CreateProcess()
, который, помимо прочего, получает указатель на STARTUPINFO
структуру. Чтобы инициализировать структуру, которую я делал:
STARTUPINFO startupInfo = {0}; // Or even '\0'.
startupInfo.cb = sizeof(startupInfo);
При компиляции программы с включением этих наборов предупреждений GCC -Wall -Wextra
выдает предупреждение о том, что отсутствует инициализатор, указывающий на первую строку.
warning: missing initializer
warning: (near initialization for 'startupInfo.lpReserved')
В итоге я сделал:
STARTUPINFO startupInfo;
memset(&startupInfo, 0, sizeof(startupInfo));
startupInfo.cb = sizeof(startupInfo);
Таким образом, компилятор не предупреждает. Вопрос в том, в чем разница между этими способами инициализации структуры? При использовании первого метода не инициализируется ли структура? Какой из них вы бы порекомендовали?
struct struct_with_four_fields x = {1, 2, 3};
когда инициализированы только 3 из 4 членов.