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