sigaction结构和功能

Dee*_*pak 2 c++ linux signals

以下代码编译,

struct sigaction sa;
memset (&sa, 0, sizeof (sa));
sa.sa_handler = &handler;
sigaction (SIGRTMIN + 5, &sa, NULL);
Run Code Online (Sandbox Code Playgroud)

但如果我省略struct它会给我错误:

预期';' 在'sa'之前

我正在使用c ++,其中使用struct关键字不是必需的.

我用它时它是如何工作的struct.

Jam*_*nze 7

在C中,结构标签位于与其他名称不同的名称空间中,因此它们不会发生冲突.在C++中,语言中有一个特殊的hack来支持这一点:除了通常的函数重载之外,你可以在同一范围内有两个相同的符号,一个是指定类类型或枚举的类型名称.查找名称时,编译器将选择不是类型名称的名称,除非名称紧跟在类键(class,structunion)或关键字之后enum.