Julian Seward wrote: > > > > Unfortunately C99 relaxed this requirement, and allowed abominations like > > > the win64 ABI. > > > > > > This means you have a choice: Write standard conforming code (long) that > > > works on all known systems except win64, or use features that do't exist > > > on many systems. IIRC C99 types like intptr_t are not supported on > > > several fairly common unix systems. > > > > In that case I'll vote for unsigned long. I'd pass the issue to those > > doing a win64 port, if ever that happens. > > In Valgrind-world we use an alternative approach, which is to typedef > a set of new integral types and use those exclusively, and not use the > native 'int', 'long' etc. The new types have a single fixed meaning > regardless of the host or guest and it is up to the configure script > to set up suitable typedefs. At startup Valgrind checks the size and > signedness of these types is as expected, so any configuration errors > are caught. This has proved very helpful in porting to a number of > platforms.
FWIW, I agree with that. Thiemo