从不兼容的指针类型分配

时间:2010-04-21 14:45:45

标签: c pointers struct typedef

我已经设置了以下结构:

typedef struct _thread_node_t {
    pthread_t thread;
    struct thread_node_t *next;
} thread_node_t;

......然后我定义了:

// create thread to for incoming connection
thread_node_t *thread_node = (thread_node_t*) malloc(sizeof(thread_node_t));
pthread_create(&(thread_node->thread), NULL, client_thread, &csFD);

thread_node->next = thread_arr; // assignment from incompatible pointer type

thread_arr = thread_node;

其中thread_arr为thread_node_t *thread_arr = NULL;

我不明白编译器为什么抱怨。也许我误会了什么。

2 个答案:

答案 0 :(得分:5)

不应struct thread_node_t *next;struct _thread_node_t *next;


此外,请取消显式演员。

thread_node_t *thread_node = (thread_node_t*) malloc(sizeof(thread_node_t));

thread_node_t *thread_node = malloc(sizeof(thread_node_t));

答案 1 :(得分:3)

这是因为thread_arr是一个thread_node_t指针,你的下一个成员是 struct thread_node_t指针。不一样。