我已经设置了以下结构:
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;
我不明白编译器为什么抱怨。也许我误会了什么。
答案 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指针。不一样。