我正在为程序创建某种前端。要启动该程序,我使用调用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};
在4个成员中只有3个被初始化。