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.