Eric Sosman <esosman@[EMAIL PROTECTED]
> wrote:
> C99 improves the situation, but only a little. If the integer
> types intptr_t and uintptr_t exist, then any valid void* can be
> converted to one of them and back again and survive the journey.
> (There are no guarantees for invalid pointers, nor for converting
> an arbitrary integer value to void* and back.) Note, though, that
> these integer types are optional: If they exist they will work as
> you desire, but on some "exotic" architecture they might be absent.
On the upside, if your architecture is exotic enough that it has a C99
implementation but no (u)intptr_t, it's probably not reliably possible
to do this in the first place. So if including <stdint.h> doesn't result
in a definition of UINTPTR_MAX, bailing out with an #error would
probably have been your best option anyway.
BTW, I still don't understand why we have both intptr_t and uintptr_t.
We really only need either of those.
Richard


|