присвоение из несовместимого типа указателя - PullRequest
6 голосов
/ 21 апреля 2010

Я установил следующую структуру:

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 ]

5 голосов
/ 21 апреля 2010

Не должно 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));
3 голосов
/ 21 апреля 2010

Это потому, что thread_arr является указателем thread_node_t, а ваш следующий член - указатель struct thread_node_t. Не то же самое.

...