# define NULL implementation-defined
概要
マクロNULL
は、処理系定義のヌルポインタ定数に展開される。
ヌルポインタ定数は、ポインタがいかなるオブジェクトも指し示さないことを表現するために使われる。
マクロNULL
は、以下の標準ヘッダにおいて定義される:
<clocale>
<cstddef>
<cstdio>
<cstdlib>
<cstring>
<ctime>
<cwchar>
備考
C++03において、「ヌルポインタ定数」は「値が0になる整数定数式」と定義されていた。したがって、マクロNULL
の値として0
や0L
は規格に適合するが、(void*)0
は整数定数式ではないため適合しない。
C++11では、「ヌルポインタ定数」の定義に「std::nullptr_t
型のprvalue」が追加されたため、nullptr
も規格に適合する。しかし、NULL
の値の型が変わるとコードの互換性を損なうことから、当面の間NULL
の値は整数定数式であると思われる。C++11以降はNULL
ではなくnullptr
を使用するとよい。