Re: void *
"You can just as well use an opaque structure instead of void *, it makes the code more readable and unlike void *s the compiler makes sure variables aren't passed to the wrong function."
Opaque structures? Wrong function? Wtf are you talking about? If its C it can't be passed to the wrong function since there's no concept of function overloading and the whole point of void is opaqueness anyway except you're not limited to a particular structure!