I\'ve been looking at Advanced Linux Programming by Mitchell, Oldham and Samuel. I\'ve seen in the section on pthreads something about void pointers and casting tha
The second example is a good example of why casting to void* is usually a mistake. It should be
void *primep = ′ // no cast needed
pthread_join(thread, &primep);
because pthread_join takes a void** as its second argument. The void* only makes sure the bug passes the compiler because the void* is converted to void** automatically.
So, when do you need to cast to void* or back:
(u)intptr_t);void* (or take a different type of pointer and you have void*); that usually means functions taking a variable number of arguments such as printf.