小编Sha*_*tia的帖子

为什么编译器会抛出此警告:"缺少初始化程序"?结构是否初始化?

我正在为程序创建某种前端.要启动程序,我正在使用调用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)

这样编译器就不会发出任何警告.问题是,这些初始化结构的方式有什么区别?使用第一种方法,是不是初始化了结构?你会推荐哪一个?

c winapi gcc

69
推荐指数
4
解决办法
5万
查看次数

有没有办法在GCC中使用fopen_s()或者至少创建一个#define?

MSVC编译器说不fopen()推荐使用,并建议使用fopen_s().

有什么方法可以使用fopen_s()并且仍然可移植吗?

#define什么想法?

c gcc fopen visual-c++

14
推荐指数
3
解决办法
2万
查看次数

标签 统计

c ×2

gcc ×2

fopen ×1

visual-c++ ×1

winapi ×1