Yeah, we were kind of unique in developing a few products that cut across many UNIX architectures:
Sun 4.1.3 / Solaris 2.0
DEC Alpha
HP 9000 (in various incarnations)
SGI in various incarnations (Oxygen, O2, Onyx, …)
Intel processors in both 32 and 64 bit modes
Ardent
Stellar G1000
MIPS (both MIPS’s native workstation and the DEC SPIM machine)
Some i860 machines from IBM and Oki
IBM RS6000
Cray YMP.
The latter was the one that really had some issues. The thing really only had char and word. Int, short, and long were all 64 bits. That one discovered a portability hack. At least I had put a diagnostic in to catch the fact I hadn’t implemented such a case in the generic code. I got a call from the guy doing to port (he had to go to the Cray offices) to tell me that the first thing the product said was “You’ve got to be kidding.”
Later we bopped back and forth between various NT-based systems including Intel at 32 and 64 bits (don’t get me started about the inane DWORD_PTR type which is not a pointer nor a double word) and on the iTanium (which we dubbed the iTanic). Never got around to trying the NT Alpha.
Not only type sizing issues but having to worry about byte order, etc…
I still remember finding a #define notyet 1 in one piece of code on the Ardent…that onewas scary.