Correct way of defining NULL and NULL_POINTER?

后端 未结 2 1539
终归单人心
终归单人心 2020-12-06 07:16

As far as I know, C defines NULL like this:

#define NULL ( (void *) 0)

Then, how should we define NULL_

相关标签:
2条回答
  • 2020-12-06 07:38
    #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 type void *, is called a null pointer constant

    0 讨论(0)
  • 2020-12-06 07:40

    It is only in pointer contexts that NULL and 0 are equivalent. NULL should not be used when another kind of 0 is required, even though it might work, because doing so sends the wrong stylistic message. (Furthermore, ANSI allows the definition of NULL to be ((void *)0), which will not work at all in non-pointer contexts.) In particular, do not use NULL when the ASCII null character (NUL) is desired. Provide your own definition

    #define NUL '\0'
    

    NULL should be used only as a pointer constant.

    0 讨论(0)
提交回复
热议问题