例如 typedef struct { int valA; structB *pB; }StructA;
typedef struct { int valB; structA *pA; }StructB;
请注意 是互相嵌套
按照您的答案我已经编译通过并成功了,我之前写的代码中缺少了"typedef struct structA{...}structA;"中花括号前边的structA,就不能编译通过,告警重复定义.能否解释一下这两者之间的内在区别?
追答个人这么理解,不一定正确:
我感觉你去掉了structA后,就和这个定义根本上是一样的啊,你看看:
struct structA {
int a;
};
typedef int structA;
提示structA重定义。下面看你的问题,你要是去掉就变成:
struct structA;
typedef struct {
int a;
structB *pb;
}structA;
其中
typedef struct {
int a;
structB *pb;
}structA;
的作用可以分开两个部分:先定义
struct {
int a;
structB *pb;
},
然后再取一个别名是structA,但是structA在前面已经声明了,所以是两个一样的名字,就重定义了,楼主给分啊,我打得这么辛苦
为什么不要?