这两个声明之间的区别是什么?

时间:2016-01-31 13:12:49

标签: c++

我只是在C ++语境中提问。

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

1 个答案:

答案 0 :(得分:4)

第一个定义名为x1的类。

第二个定义了一个未命名的类,并定义了一个类型别名,名称为x2

C ++中的差异非常微妙。您可以通过尝试使用相同的名称声明函数来观察差异:

void x1(); // OK
void x2(); // not OK, redefined as a different type of symbol

在实践中,您应该避免使用与同一名称空间中的类相同的名称来定义函数,因此几乎不会出现这种差异。第一个通常是首选,因为它更简单。

在C中,difference会更多地影响标识符的使用。