Ich erstelle eine Art Frontend für ein Programm. Zum Starten des Programms verwende ich den Aufruf CreateProcess()
, der unter anderem einen Zeiger auf eine STARTUPINFO
Struktur erhält . Um die Struktur zu initialisieren, die ich früher gemacht habe:
STARTUPINFO startupInfo = {0}; // Or even '\0'.
startupInfo.cb = sizeof(startupInfo);
Wenn -Wall -Wextra
ich das Programm mit GCC kompiliere, das diese Warnsätze aktiviert , erhalte ich eine Warnung, dass ein Initialisierer fehlt, der auf die erste Zeile zeigt.
warning: missing initializer
warning: (near initialization for 'startupInfo.lpReserved')
Also habe ich Folgendes gemacht:
STARTUPINFO startupInfo;
memset(&startupInfo, 0, sizeof(startupInfo));
startupInfo.cb = sizeof(startupInfo);
Auf diese Weise gibt der Compiler keine Warnung aus. Die Frage ist, was ist der Unterschied zwischen diesen Arten der Initialisierung einer Struktur? Wird die Struktur mit der ersten Methode nicht initialisiert? Welches würdest du empfehlen?
struct struct_with_four_fields x = {1, 2, 3};
Wenn nur 3 von 4 Mitgliedern initialisiert werden.