Zack Weinberg zackw@panix.com once said:
- Win64 is the *only* flat-memory-space ABI ever promulgated in which pointers cannot safely be converted to 'unsigned long' and back without loss of information. This is a willful violation of requirements in C89 and is IMNSHO sufficient justification to refuse to port to this platform, all by itself.
This is just wrong. There's nothing wrong with having long be the same size as int. And Windows isn't the only 64-bit platform that does it. Plan 9 works the same way.
C89 explicitly says that even the mapping from pointer to integer types is implementation-dependent.
Anthony