相关疑难解决方法(0)

初始化对象时{0}意味着什么?

何时{0}用于初始化对象,这是什么意思?我找不到任何{0}地方的任何引用,并且由于大括号,谷歌搜索没有帮助.

示例代码:

SHELLEXECUTEINFO sexi = {0}; // what does this do?
sexi.cbSize = sizeof(SHELLEXECUTEINFO);
sexi.hwnd = NULL;
sexi.fMask = SEE_MASK_NOCLOSEPROCESS;
sexi.lpFile = lpFile.c_str();
sexi.lpParameters = args;
sexi.nShow = nShow;

if(ShellExecuteEx(&sexi))
{
    DWORD wait = WaitForSingleObject(sexi.hProcess, INFINITE);
    if(wait == WAIT_OBJECT_0)
        GetExitCodeProcess(sexi.hProcess, &returnCode);
}
Run Code Online (Sandbox Code Playgroud)

没有它,上面的代码将在运行时崩溃.

c c++

250
推荐指数
6
解决办法
6万
查看次数

C++中如何将结构体初始化为0

这是一个相关的 C 答案,在 C++ 中不起作用(作为结构的零初始化器):Initializing a struct to 0。提出的解决方案之一是:

myStruct _m1 = {0}; 
Run Code Online (Sandbox Code Playgroud)

这在 C 中工作正常,但在 C++ 中不起作用。:( :

错误:无法使用“int”类型的右值初始化“myScope::MyStruct”类型的成员子对象。

如何在 C++ 中对结构体进行零初始化?

有关的:

  1. 在 C 中将结构体初始化为 0:将结构体初始化为 0
  2. 更新:(一个相邻但不重复的问题,结果也非常有用)用空花括号初始化

也可以看看:

  1. [相邻相关,但适用于 C 风格数组,而不是结构]如何将数组的所有成员初始化为相同的值?

致投票结束此问题的人们:

我的问题不是这个其他问题的重复(Initialization with empty curlybraces),因为这个其他问题不是询问在 C++ 中初始化结构体的各种方法以及为什么 C 方法不起作用,而是它们是询问为什么 C++ 关键字会explicit破坏他们的初始化技术之一。两个不同的问题。不重复。

我问的后续问题:

  1. 为什么不初始化 C++ 结构体以将= {0}其所有成员设置为 0?

c++ struct initialization

32
推荐指数
1
解决办法
5万
查看次数

标签 统计

c++ ×2

c ×1

initialization ×1

struct ×1