以下代码编译,
struct sigaction sa;
memset (&sa, 0, sizeof (sa));
sa.sa_handler = &handler;
sigaction (SIGRTMIN + 5, &sa, NULL);
但如果我省略struct
,则会给我错误:
预期';'在'sa'之前
我正在使用c ++,其中使用struct
关键字不是必需的。
当我使用struct
时,它是如何工作的。
答案 0 :(得分:7)
在C中,结构标签位于与其他标签不同的名称空间中
名字,所以他们不能冲突。在C ++中,有一个特殊的
用语言来支持这个:除了通常的
函数重载,你可以有两个相同的符号
相同的范围,提供一个是指定类类型的类型名称
或者枚举。查找名称时,编译器会
除非名称,否则选择不类型名称的那个
紧跟一个类密钥(class
,struct
或union
)
或关键字enum
。