What's the difference between these two declarations?
本问题已经有最佳答案,请猛点这里访问。
我只是在C++的上下文中提问。
1 2 3 4 5 6 7 | struct x1 { ... }; typedef struct { ... } x2; int main() { x1 a; x2 b; } |
第一个定义了一个名为
第二个定义了一个未命名的类,还定义了一个类型别名,名称为
C++中的差别非常微妙。您可以通过尝试用相同的名称声明函数来观察差异:
1 2 | void x1(); // OK void x2(); // not OK, redefined as a different type of symbol |
在实践中,您应该避免使用与同一名称空间中的类相同的名称定义函数,因此这种区别几乎不会出现。第一个通常是首选的,因为它比较简单。
在C语言中,差异对标识符的使用影响更大。