这两个声明有什么区别?

7

我只是在C++的背景下提出这个问题。

struct x1 { ... };
typedef struct { ... } x2;
int main()
{
    x1 a;
    x2 b;
}

1
在C++中,没有区别(但在C中有)。 - deviantfan
1个回答

4
第一个定义了一个名为x1的类。
第二个定义了一个未命名的类,并将类型别名定义为x2
在C++中,这两者之间的区别非常微妙。您可以通过尝试声明相同名称的函数来观察差异:
void x1(); // OK
void x2(); // not OK, redefined as a different type of symbol

实际上,您应该避免在相同命名空间内使用与类相同的名称定义函数,因此这种区别很少出现。第一种通常更受欢迎,因为它更简单。
在 C 中,这个差异会对标识符的使用造成更大的影响。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接