&引用;将指针延迟到不完整类型“;c中的错误

&引用;将指针延迟到不完整类型“;c中的错误,c,structure,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

我有两个这样的结构

代码编辑:

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)

任何帮助都将不胜感激

typedef struct
{
   gtthread_t *th;
   list *next;
}list;
当解析器位于第3行时,它不知道
list
是什么意思。试一试

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

相反。

只需像这样重写列表

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

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

i、 e

temp=(list*)malloc(sizeof(list));
temp->next=(列表*)malloc(sizeof(列表));
temp->next->th=(gtthread_t*)malloc(sizeof(gtthread_t));
temp->next->th->threadId=
临时->下一步->第四步->堆栈=

您对
列表的定义有错误,编译器应该在
列表*下一步投诉行,因为该行尚未定义
列表
。请发布一个完整的显示问题的最小源文件。这会编译吗?这是C,因此您需要在结构列表中指定“结构列表*下一步”。您发布的代码不是真实代码。通过这个不相关的示例来猜测实际代码中发生了什么是浪费时间。非常抱歉。我已经编辑了代码。我得到了同样的错误。我想知道你是否有一些wierd命名冲突-可能与宏。您是否尝试过将
list
更改为
Hari
或类似的内容?
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>