我正在为程序创建某种前端.要启动程序,我正在使用调用CreateProcess(),其中包括一个指向STARTUPINFO结构的指针.要初始化我以前做的结构:
STARTUPINFO startupInfo = {0}; // Or even '\0'.
startupInfo.cb = sizeof(startupInfo);
Run Code Online (Sandbox Code Playgroud)
当用GCC编译程序启用这些警告时,-Wall -Wextra它会给我一个警告,说明缺少初始化程序指向第一行.
warning: missing initializer
warning: (near initialization for 'startupInfo.lpReserved')
Run Code Online (Sandbox Code Playgroud)
所以我最终做了:
STARTUPINFO startupInfo;
memset(&startupInfo, 0, sizeof(startupInfo));
startupInfo.cb = sizeof(startupInfo);
Run Code Online (Sandbox Code Playgroud)
这样编译器就不会发出任何警告.问题是,这些初始化结构的方式有什么区别?使用第一种方法,是不是初始化了结构?你会推荐哪一个?
MSVC编译器说不fopen()推荐使用,并建议使用fopen_s().
有什么方法可以使用fopen_s()并且仍然可移植吗?
有#define什么想法?