I was also stating (under Henry’s 10th) using a properly defined macro with the complete cast scheme will be correct and portable to all known conforming C compilers no matter the target HW architecture — which in a commercial SW setting is highly valued. Clem On Sun, Sep 20, 2020 at 7:53 PM Clem Cole wrote: > 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 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 (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 ' (or or ) >> >> 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 > > > -- Sent from a handheld expect more typos than usual