私の知る限り、CNULL
では次のように定義されています。
#define NULL ( (void *) 0)
では、どのように定義すればよいのNULL_POINTER
でしょうか? 私は自分のプログラムで同じように定義し、うまくいきましたが、それは単なる偶然だと思います:
#define NULL_POINTER ( (void *) 0)
もしあれば、論理的な定義は何でしょうか?
私の知る限り、CNULL
では次のように定義されています。
#define NULL ( (void *) 0)
では、どのように定義すればよいのNULL_POINTER
でしょうか? 私は自分のプログラムで同じように定義し、うまくいきましたが、それは単なる偶然だと思います:
#define NULL_POINTER ( (void *) 0)
もしあれば、論理的な定義は何でしょうか?
#define NULL ( (void *) 0)
と
#define NULL 0
両方とも有効です。null ポインター用に独自のマクロを実装する必要がある場合は、同じ規則が適用されます。
C11(ISO/IEC 9899:201x) §6.3.2.3ポインタセクション 3
値を持つ整数定数式
0
、または型にキャストされたそのような式void *
は、NULL ポインター定数と呼ばれます。
NULL
と0
が等しいのはポインタ コンテキストだけです。NULL
別の種類の0
が必要な場合は、それが機能する可能性がありますが、使用しないでください。使用すると、間違ったスタイルのメッセージが送信されるためです。(さらに、ANSI では の定義NULL
を be((void *)0)
にすることができますが、これはポインター以外のコンテキストではまったく機能しません。) 特に、NULL
ASCII ヌル文字 (NUL) が必要な場合は使用しないでください。独自の定義を提供する
#define NUL '\0'
NULL
ポインター定数としてのみ使用してください。