Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

assignment from incompatible pointer type

I have set up the following struct:

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

... and then I have defined:

// 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;

where thread_arr is thread_node_t *thread_arr = NULL;

I don't understand why the compiler is complaining. Maybe I'm misunderstanding something.

like image 286
Hristo Avatar asked Apr 21 '10 14:04

Hristo


2 Answers

Shouldn't struct thread_node_t *next; be struct _thread_node_t *next;


Also, do away with the explicit cast.

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

to

thread_node_t *thread_node = malloc(sizeof(thread_node_t));
like image 177
N 1.1 Avatar answered Oct 05 '22 19:10

N 1.1


It's because thread_arr is a thread_node_t pointer, and your next member is a struct thread_node_t pointer. Not the same thing.

like image 27
Macmade Avatar answered Oct 05 '22 17:10

Macmade