title: generic programming in C with void pointer
body: <p>Even though it is possible to write generic code in C using void pointer(generic pointer), I find that it is quite difficult to debug the code since void pointer can take any pointer type without warning from compiler. 
  (e.g function foo() take void pointer which is supposed to be pointer to struct, but compiler won't complain if char array is passed.) 
  What kind of approach/strategy do you all use when using void pointer in C?</p>