change API parameters.
unsigned char* -> void*.
the user should do cast types to 'unsigned char*'.
and it's annoying a bit.

    uint32_t val;
    struct_pack((unsigned char*)(&val), "!I", 1234);

now the user can write the following code:

    uint32_t val;
    struct_pack(&val, "!I", 1234);