#if defined(_WIN32) || defined(WIN32)
which would cause the appropriate Windows specific code to be compiled without having to remember to add a /DWIN32 to the command line, but would also support a hypothetical compiler that defined WIN32 but not _WIN32. Unless there is a compelling reason to use WIN32 over _WIN32, I would suggest changing to either _WIN32 or _WIN32 || WIN32.
