On Tue, Nov 01, 2005 at 08:50:43AM +0100, Geert Uytterhoeven wrote:
> On Tue, 1 Nov 2005, Willy Tarreau wrote:
> > But if it's a pointer why don't you declare them unsigned long then ?
> > C defines the long as the integer the right size to store a pointer.
>   ^
> Is it C?

Yes, that's what I read quite a time ago, and it appears that it was an
interpretation of the spec which is not true anymore with LLP64 models :-(

> Since on Wintendo P64 it's not true...

I don't know if x86_64 is LP64 or LLP64 on Linux, but at least my alpha
and sparc64 are LP64, so is another PPC64 I use for code validation.
LPC64 is the recommended model for easier 32 to 64 portability (where
ints are 32 ; long, longlong, ptrs are 64).

There's an interesting reading about this here :

   http://www.usenix.org/publications/login/standards/10.data.html

So Matt, you have to use void* or char* in your types.

> Gr{oetje,eeting}s,
> 
>                                               Geert

Thanks Geert for the notification, it was an opportunity to refresh my
thoughts about portability practices. I think it will be time to buy
an x86_64 :-/

Willy

Reply via email to