我有两个像这样的结构
已编辑代码:
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)。
任何帮助将不胜感激
答案 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>