我不能typedef指向已经被typedef定义的结构的指针

时间:2019-05-16 09:46:32

标签: c data-structures struct linked-list typedef

对于这些声明的行,我有些困惑。我想为我的程序创建一个链表,但是由于某种原因,当我尝试编译它时,它总是会出现错误。基本上,这将是我的主节点模型,并且在列表之后还有另一个结构(WITHOUT TYPEDEF)。哪个编译就好了。我不知道怎么了

我已经尝试过将typedef放在struct学生上。

typedef struct
{
    char name[50];
    int id;
    node next;

}student;

typedef student* node;

typedef struct listR* list;

struct listR
{
    node head,tail;
    int size;

};

错误: 类型名称未知的“节点” 警告: 初始化从整数开始的指针,无需强制转换

2 个答案:

答案 0 :(得分:2)

编译器不知道节点是什么,因为您是在创建结构之后创建节点类型的。

您可以执行以下任一操作:

typedef struct node node;

struct node
{
  char name[50];
  int id;
  node* next;
};

要告诉编译器节点是什么,

typedef struct node {
    char name[50];
    int id;
    struct node* next;
} node;

答案 1 :(得分:0)

我会用这个:

struct Node
{
  struct Node *next;
  struct Node *prev;
};

但后来我碰巧是那些没有充分理由不喜欢类型定义结构的人之一。在此处阅读更多信息:https://stackoverflow.com/a/54752982/6699433