Estoy creando una especie de interfaz para un programa. Para lanzar el programa estoy usando la llamada CreateProcess()
, que entre otras cosas recibe un puntero a una STARTUPINFO
estructura. Para inicializar la estructura que solía hacer:
STARTUPINFO startupInfo = {0}; // Or even '\0'.
startupInfo.cb = sizeof(startupInfo);
Al compilar el programa con GCC que habilita estos conjuntos de advertencias -Wall -Wextra
, me da una advertencia que dice que falta un inicializador que apunta a la primera línea.
warning: missing initializer
warning: (near initialization for 'startupInfo.lpReserved')
Así que terminé haciendo:
STARTUPINFO startupInfo;
memset(&startupInfo, 0, sizeof(startupInfo));
startupInfo.cb = sizeof(startupInfo);
Y de esta forma el compilador no da ninguna advertencia. La pregunta es, ¿cuál es la diferencia entre estas formas de inicializar una estructura? Usando el primer método, ¿no se inicializa la estructura? ¿Cuál recomendarías?
struct struct_with_four_fields x = {1, 2, 3};
donde solo se inicializan 3 de 4 miembros.