snprintf definition should go in config.h
If Win32 is enabled and Joliet no, it fails. Joliet should be enabled.
vsnprintf definition should go in config.h
lseek64 is defined as _lseeki64 in Windows SDK.
types.h should go to correct place for manually created unistd.h in VS
Macros with arguments are defined differently in GCC than in VS.