标签允许多个声明使用同一个成员列表,并且创建同一种类型的结构体
以下是小菜的理解,不知如何正确理解这句话
用的是vs编译环境
typedef struct A
{
int a;
}A;
typedef struct A
{
int a;
}B;
//error C2011:struct 类型重定义
typedef struct A
{
int a;
}A;
typedef struct A
{
int a;
}B;
A ta;
B *tb = & ta;// 赋值类型不兼容
你是不是在不同的cpp里声明的这两个struct?不同cpp的话,虽然名字都是A,但是是不同的两个struct,自然不能直接使用。
如果是在同一个cpp,理论上会报错,至少也是warning才对。莫非是编译器自动把A给忽略了,直接认为你声明了A、B两种struct?
我认为你的代码应该报重复定义的错误.
你用的什么编译器?我用gcc编译,提示的错误是重复定义struct A
typedef struct A
{
int a;
} tA;
typedef struct A tB;
tA ta;
tB *tb = & ta;
这样其实没有错误也没有警告.
多次声明的意义何在???