“取消引用指向不完整类型的指针”错误

时间:2011-09-22 05:34:47

标签: c structure

我有两个像这样的结构

已编辑代码:

typedef struct 
{
   int threadId;
   void *stack;
}gtthread_t;

typedef struct
{
   gtthread_t *th;
   struct list *next;
}list;

在我的代码中,我使用了以下结构:

list *temp;
gtthread_t thread;
if(temp->next->th->threadId != thread.threadId && temp->next!=NULL) //error generated here
{
   //do something
}

此处也出现错误:

free(temp->next->th->stack);

我在这里做错了什么?我在temp-> next中有一个节点(它不是NULL)。

任何帮助将不胜感激

3 个答案:

答案 0 :(得分:3)

typedef struct
{
   gtthread_t *th;
   list *next;
}list;

当解析器位于第3行时,它不知道list的含义。尝试

typedef struct list
{
   gtthread_t *th;
   struct list *next;
}list;

代替。

答案 1 :(得分:1)

只需像这样重写列表;

struct list
{
   gtthread_t *th;
   struct list *next;
};
typedef struct list list;

答案 2 :(得分:-1)

还需要创建此结构:temp->next->th->threadId

temp = (list *)malloc(sizeof(list));
temp->next = (list *)malloc(sizeof(list));
temp->next->th = (gtthread_t *)malloc(sizeof(gtthread_t));
temp->next->th->threadId = <some value>
temp->next->th->stack = <some value>