As far as I know, C defines NULL
like this:
#define NULL ( (void *) 0)
Then, how should we define NULL_POINTER
? I defined it the same in my program and it worked, but I suppose that is just a coincidence:
#define NULL_POINTER ( (void *) 0)
What would be the logical definition, if any ?
It is only in pointer contexts that
NULL
and0
are equivalent.NULL
should not be used when another kind of0
is required, even though it might work, because doing so sends the wrong stylistic message. (Furthermore, ANSI allows the definition ofNULL
to be((void *)0)
, which will not work at all in non-pointer contexts.) In particular, do not useNULL
when the ASCII null character (NUL) is desired. Provide your own definitionNULL
should be used only as a pointer constant.and
are both valid. If you need to implement your own macro for null pointer, the same rule applies.