Wow, all that code in header files is sure bloating your executables.

> But what to do in the case of "cast from `char*' to `UInt16*'" or `char*' to `UInt32*' or `char*' to `short unsigned int*'?
I explained already - declare a variable of the right type, then do a memcpy()