A function to handle multiple datatypes

pYro_65:
You do not want to break type checking by using a void*, there are uses for these types but destroying type safety is not one of them.

Well sorry, but actually, I do want to break type checking in some cases. And I do. And that is precisely what void* is for, both in C and C++ -- to work with a pointer without a type.

As for "type safety", as we have already discussed, whether or not the gun is "safe" or not depends on whether you can shoot straight.

C is a sharp language. Assembly even sharper. When dealing with sharp objects, it pays to know what you are doing, and be to be careful. Otherwise, accidents can and will happen.

But if sharp objects make you nervous, you can always choose to use the safety scissors instead. Choices are good.