Must a NULL pointer be a 0 bit pattern?
Graham Ross
grahamr at azure.UUCP
Thu Nov 1 03:51:46 AEST 1984
Three comments about non-zero NULL:
1. Because of implicit comparison with zero, as in "while(p)s;", this idea
is cannot be implemented simply by changing stdio.h to read
#define NULL ((char*)0x87654321)
2. In making changes to the compiler, this must remain zero:
(p = NULL , (int)p)
Also, for every declared "var", this must remain one:
(p = &var , (int)p != 0)
3. The issue of how a union can be set to zero was handled properly by the
correspondent who said the first member is initialized to zero. A further
note might be made that exec(2) need not know where to put the 0x87654321
patterns; crt0 or something emitted by the linker can do this, but perhaps
with a substantial amount of work and/or abandonment by Unix of the
"common model" for linking.
Graham Ross, Tektronix, ...!tektronix!tekmdp!grahamr
More information about the Comp.lang.c
mailing list