我需要帮助声明一些要在我的代码中使用的结构。我的想法是,我需要声明一些相互包含的结构,并使用typedef来具有良好的编码风格。
我试图声明这些:
typedef struct cell
{
T_Tree list_of_sons;
struct cell *next;
}ListCell, *T_List, **Adr_List;
typedef struct node
{
int value;
T_List list;
}Node, *T_Tree;
这是行不通的,因为之前没有声明类型“ T_Tree”,但我想找到一种在保留上面显示的类型定义的同时声明它们的方法。
答案 0 :(得分:3)
从不(除函数指针外)在typedef-s中隐藏指针。它使代码更易于出错且难以阅读(您看不到何时看到声明是否是指针)。
struct node;
typedef struct cell
{
struct node *list_of_sons;
struct cell *next;
}ListCell;
typedef struct node
{
int value;
ListCell *list;
}Node;
答案 1 :(得分:2)
在第一个声明之前插入typedef struct node *T_Tree;
。然后从最后一个声明中删除T_tree
。
这声明T_Tree
是指向struct node
的指针。即使struct
没有完整的定义,您也可以声明指向struct
的指针。