Definition of NULL. (fwd)

Jonathan Larmour
Mon Apr 27 10:39:00 GMT 1998

Joel Sherrill wrote:
> An RTEMS user recently noticed that the newlib definitions of NULL are not
> proper.  The proper definition is apparently "0" or "(void *)0".  The
> offending definitions are in:
> stdio.h:#define NULL    0L
> stdlib.h:#define NULL 0L
> string.h:#define NULL 0L
> time.h:#define  NULL    0L
> In newlib/libc/include.  There may be others in machine and OS specific
> files.

Even more interestingly, the "one true" definition is in stddef.h. This is
because if you have included this file from c++ sources, using g++, then you
actually want the definition to be g++'s internal symbol __null. This is all
wrapped up in stddef.h.

So I think that in addition to changing these instances to (void *)0 (which
is the most correct) anyway, we should also #define __need_NULL before
including <stddef.h> so that we pick up the compiler's idea of NULL if


Jonathan L.
Cygnus Solutions, 35 Cambridge Place, Cambridge, UK.  Tel: +44 (1223) 728762
"It is impossible to enjoy idling thoroughly unless||Home e-mail: jifl @ 
one has plenty of work to do - Jerome K. Jerome"   ||
Help fight spam!  These opinions are all my own fault

More information about the Newlib mailing list