在C中取消引用指向不完整类型(带有明确定义的结构)的指针

时间:2013-10-21 22:41:29

标签: c pointers struct dereference

我知道至少有10个问题已经存在,但他们都指出了我没有做的事情。

在头文件中,我有......

typedef struct Node {
   struct Node *next;
   struct pgmap page;
} Node;

typedef struct linkedlist {
struct Node *head_ptr;
struct Node *tail_ptr;
} LList;

在我的c档案中,我有

struct LList mainList;

int main()
{
    struct LList *root;
    root = &mainList;
    root->head_ptr = NULL;
    root->tail_ptr = NULL;
    ...
}

在root->我得到解除引用ptr ...错误。已经存在的所有线程都指出了人们不小心创建匿名结构的问题,例如

typedef struct{
    int a;
}; monkey

而不是

typedef struct monkey{
    int a;
}; monkey

所以我错过了什么????

1 个答案:

答案 0 :(得分:10)

没有名为“struct LList”的类型。代码“typedef struct linkedlist { ... } LList;”会创建两个类型名称:一个是struct linkedlist,另一个是LList(没有“struct”)。因此,您需要将“struct LList”更改为“LList。”