64-bit NULL: a followup

Bruce Evans 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
for this.

Bruce


More information about the freebsd-standards mailing list