最終更新日時(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を使用するとよい。

関連項目

参照