> Tell me what the good reason behind the fucking abuse of #define in all the Windows > headers to select between wide/narrow character versions of APIs.
Win9x was ascii, WinNT was unicode with ascii backwards compatibility. When you consider the heritage of windows, it's pretty amazing they managed to have two completely seperate codebases that had any amount of compatibility at all.
> That causes so much trouble when trying to develop cross-platform software.
After twenty years of *nix experience from multiple vendors, I've had more headaches with *nix compatibility. There is more than just linux out there.