However it makes most sense.. could return a char , could take a char as a param and fill it, or could take 3 int pointers and fill thos with the major.minor.patch, etc. I like the first, that way can do something simple like "printf("Version: %s", fn_get_lib_version())" or something like that..