La #define viene valutata al momento della compilazione, per questo va bene giusto per identificare la piattaforma per cui è compilato l'eseguibile (Windows o POSIX); per i dettagli del sistema operativo, come spiegato prima, usi poi API come GetVersionEx (su Windows) e uname (su sistemi operativi POSIX).