关于结构体自引用的问题
看到几个帖子,关于使用typedef实现结构体自引用,模板如下
struct tag_2; //这里进行结构体不完整的声明
typedef struct tag_2 NODE;
struct tag_2{
int value;
NODE *link;
};
但是我看到有一个实际例子
typedef struct tag_2 NODE;
struct tag_2{
int value;
NODE *link;
};
缺少了struct tag_2; //这里进行结构体不完整的声明,但是依然能编译成功,这是为什么?难道不是必须的么
[解决办法]
只要最终能找到类型定义即可,不过提前声明是比较好的习惯,这里还有另外的写法:
typedef struct tag_2
{
int value;
struct tag_2 *link;
}NODE;