2

以下代码编译,

struct sigaction sa;
memset (&sa, 0, sizeof (sa));
sa.sa_handler = &handler;
sigaction (SIGRTMIN + 5, &sa, NULL);

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

预期的 ';' 在'sa'之前

我正在使用struct不需要 using 关键字的 c++。

当我使用它时它是如何工作struct的。

4

1 回答 1

7

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

于 2013-01-08T10:53:51.107 回答