Norman NULL has to be defined and I said that/showed it.   The standard says where.  I was not trying to compile NULL without a definition which I agree it not legal.  If that is what Doug was implying I missed understood him but I note NULL was introduced in Typesetter C /V7 where those compiler s set it to 0 in studio but the ANSI/ISO moved it. 

On Sun, Sep 20, 2020 at 7:03 PM Norman Wilson <norman@oclsc.org> wrote:
Doug McIlroy:



  To put it more strongly. this is not a legal C source file.

          char *s = NULL;

  But this is.

          char *s = 0;



Clem Cole:



   67)The macro NULL is defined in <stddef.h> (and other headers) as a null

   pointer constant; see 7.19.



====



$ cat null.c

char *s = NULL;

$ cat zero.c

char *s = 0;

$



zero.c is a legal C program.  null.c is not.  Create

files exactly as shown and compile them if you don't

believe me.



Prepend `#include <stddef.h>' (or <stdlib.h> or <stdio.h>)

to null.c and it becomes legal, but I think that's Doug's

point: you need an include file.



Personally I prefer to use NULL instead of 0 when spelling

out a null pointer, because I think it's clearer:

        if ((buf = malloc(SIZE)) == NULL)

                error("dammit andrew");

though I am willing to omit it when there's no confusion

about = vs ==:

        if (*p)

                dammit(*p, "andrew");



But that's just a question of style, and Doug's is fine too.



The language does not require the compiler to pre-define

NULL or to recognize it as a keyword; you have to include

an appropriate standard header file.



Norman Wilson

Toronto ON (not 0N nor NULLN)

--
Sent from a handheld expect more typos than usual