Date: Fri, 19 Sep 1997 10:25:25 -0700 From: Paul Traina <pst@shockwave.com> To: Bruce Evans <bde@zeta.org.au> Cc: jonny@coppe.ufrj.br, phk@FreeBSD.ORG, cvs-all@FreeBSD.ORG, cvs-committers@FreeBSD.ORG, cvs-gnu@FreeBSD.ORG Subject: Re: cvs commit: src/gnu/usr.bin/as/config atof-ieee.c src/gnu/usr.bin/ld/rtld rtld.c src/gnu/usr.bin/man/man man.c Message-ID: <199709191725.KAA16309@precipice.shockwave.com> In-Reply-To: Your message of "Fri, 19 Sep 1997 23:40:16 %2B1000." <199709191340.XAA17971@godzilla.zeta.org.au>
next in thread | previous in thread | raw e-mail | index | archive | help
> >#define quoting(Poul-Henning Kamp) > >// Many places in the code NULL is used in integer context, where > >// plain 0 should be used. This happens to work because we #define > >// NULL to 0, but is stylistically wrong and can cause problems > >// for people trying to port bits of code to other environments. > > > >Is there any problem in defining NULL to ((void *)0) ? > > Yes, it would require fixing all the code that uses NULL in integer > context, and would hide the opposite problem of misuse of NULL in > non-integer contexts, e.g., > > void foo(bar) void *bar; { ... } > ... > foo(NULL); /* no prototype in scope */ > > `lint -p' should warn that the arg is inconsistent, but can't do so if > NULL is ((void *)0). Could you please explain that more clearly? I see a perfectly good implied prototype in scope, and the fact of the matter is that I should not be forced to typecast NULL into a particular pointer type, ever. Null is well defined as a "pointer of some type, with a value of 0" To me, #define NULL (void *)0 is the ultimate protection against the misuse of NULL. Paul
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199709191725.KAA16309>