Fix C callback calling convention incompatibility under Win32

In Win32, C library callback functions (such as these whose address is
passed to ::atexit()) must use the cdecl calling convention in Win32. This
does not affect Win64, since thankfully there is only one calling
convention there.
Fix MSC16 signed/unsigned warnings
Suppress unimportant MSC16 warning