「NULL == 0 が必ず成立することを保証」は、されていませんね。
#define NULL 0
があるから、0になってるだけで。
#define NULL 1
にすれば、「NULL == 0」は保証されません。