As far as I know, C defines NULL like this:
#define NULL ( (void *) 0)
Then, how should we define NULL_
#define NULL ( (void *) 0)
and
#define NULL 0
are both valid. If you need to implement your own macro for null pointer, the same rule applies.
C11(ISO/IEC 9899:201x) §6.3.2.3 Pointers Section 3
An integer constant expression with the value
0, or such an expression cast to typevoid *, is called a null pointer constant