我在C++中做了很多Win32编程,许多Win32结构都有一个'size'(通常称为cbSizeor length)成员作为第一个需要在进行相关API调用之前设置的元素.例如:
WINDOWPLACEMENT wp;
wp.length = sizeof(WINDOWPLACEMENT);
GetWindowPlacement(hWnd, &wp);
Run Code Online (Sandbox Code Playgroud)
现在,我认为将结构成员初始化为零是一个好习惯,我可以这样做:
WINDOWPLACEMENT wp = { };
Run Code Online (Sandbox Code Playgroud)
要么
WINDOWPLACEMENT wp = { 0 };
Run Code Online (Sandbox Code Playgroud)
但是,如果我像这样初始化第一个成员,那么结构的其他成员会发生什么:
WINDOWPLACEMENT wp = { sizeof(WINDOWPLACEMENT) };
Run Code Online (Sandbox Code Playgroud)
它们是否自动初始化为零?或者它取决于我正在使用哪个编译器以及它是否是调试版本?
Eri*_*rik 11
是的,它们会自动初始化为零.
8.5.1/7:
如果列表中的初始值设定项少于聚合中的成员,则未明确初始化的每个成员都应进行值初始化(8.5).[例:
struct S { int a; char* b; int c; };
S ss = { 1, "asdf" };
Run Code Online (Sandbox Code Playgroud)
使用"asdf"初始化ss.a,使用"asdf"初始化ss.b,使用int()形式的表达式的值初始化ss.c,即0.
| 归档时间: |
|
| 查看次数: |
692 次 |
| 最近记录: |