When the compiler hits IGFD, WIN32 is only set if standard extensions are enabled. (Why?)
IGFD identifies Windows via WIN32 instead of _WIN32. (Why?)
- WIN32 is needed for #ifdef-gated Windows-specific methods in the header & code files.
- There's fallback code in the code file to set WIN32 if _WIN32 or __WIN32__ is set.
- Which is hit *after* the header gets included, so the header doesn't expose required methods.
-> Boom, error!
Workaround by moving the fallback into the header.