I get why you say they're evil, but their existence meant that moving from Win16 to Win32 to Win64 with minimal code changes was actually feasible without major rewrites. If those had instead been e.g. "static pascal MCIWndProc16(unsigned, unsigned, unsigned, long)", then you'd have had issues with some of those transitions. (In fact, you kind of did going from 32 to 64 bit, which is why "long" in Win64 is still 32 bits.)