64-bit NULL: a followup
bde at zeta.org.au
Sat Nov 29 05:40:52 PST 2003
On Fri, 28 Nov 2003, Marcel Moolenaar wrote:
> On Sat, Nov 29, 2003 at 04:39:14PM +1100, Bruce Evans wrote:
> > > Since Erik thinks 0 and 0L are both perfectly good definitions for
> > > NULL and Tony emphasizes that NULL is an integer expression, I think
> > ^^ may be
> > > we should change the definition of NULL to 0L to improve portability
> > > to FreeBSD/LP64. It will definitely fix known breakages on ia64.
> > This would be bogus. Long doesn't have the same width as `void *' on all
> > machines.
> The bogusness doesn't increase if we're looking at widths. It actually
> reduces. The FreeBSD runtime is either ILP32 or LP64. Hence, defining
> NULL as long is better than defining it as int. For those running
> IP32L64, NULL can trivially be redefined as int.
It could be MD in all cases to hide bugs in a MD way.
> > ((void *)0) is better, but I wouldn't change it, except
> > locally to trap errors.
> Ok, so what is better (void*)0 or 0L?
I thought the former, but forgot about C++. There could be ugly ifdefs
More information about the freebsd-standards