最終更新日時(UTC):
が更新

履歴 編集

macro
<cstddef>

NULL

# define NULL implementation-defined

概要

マクロNULLは、処理系定義のヌルポインタ定数に展開される。 ヌルポインタ定数は、ポインタがいかなるオブジェクトも指し示さないことを表現するために使われる。

マクロNULLは、以下の標準ヘッダにおいて定義される:

  • <clocale>
  • <cstddef>
  • <cstdio>
  • <cstdlib>
  • <cstring>
  • <ctime>
  • <cwchar>

備考

C++03において、「ヌルポインタ定数」は「値が0の整数リテラル」と定義されていた。したがって、マクロNULLの値として00Lは規格に適合する定義だが、(void*)0はリテラルではなく式であるため不正である。

C++11では、「ヌルポインタ定数」の定義に「std::nullptr_t型のprvalue」が追加されたため、nullptrも規格に適合する。しかし、NULLの値の型が変わるとコードの互換性を損なうことから、当面の間 NULL の定義は整数リテラルであると思われる。C++11以降はNULLではなくnullptrを使用するとよい。

関連項目