tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: definition of NULL correct?



Hi,

On Tue, Aug 11, 2009 at 4:32 PM, Greg Troxel<gdt%ir.bbn.com@localhost> wrote:
>
> We define NULL as "(void *)0" rather than "((void *)0)", and that causes
>
>  sizeof NULL
>
> to fail.
>
Wouldn't it more be a gcc issue where it treats the expression as what
c99 defines as "sizeof (type-name)" (cf section 6.5.3) leaving the "0"
as a syntax error rather than interpreting the cast and treating the
sizeof expression as "sizeof unary-expression" ? I'm not sure about
the precedence of the cast operation over the 'sizeof' operator.

C99 defines a "null pointer constant" as "an integer constant
expression with the value 0, or such an expression cast to type void
*" (cf section 6.3.2.3). Section 7.17 precise that what NULL expands
to is implementation defined.

I've not been to find anything about NULL in POSIX 2008...

 - Arnaud

>
> I found this in libunistring:
>
>  https://savannah.gnu.org/support/index.php?106973
>
> Here is an example program, which fails to build on NetBSD 5 (i386).
>
>
> Some of the gnulib people think that this is a failure of NetBSD to
> comply with POSIX 2008.
>
> ----------
>
> #include <stdlib.h>
> #include <stdio.h>
>
> int
> main()
> {
>  printf("null size is %zd\n", sizeof NULL);
>
>  return 0;
> }
>


Home | Main Index | Thread Index | Old Index