Я смутно помню, как читал об этом пару лет назад, но я не могу найти ссылку в сети.
Можете ли вы привести мне пример, когда макрос NULL не расширялся до 0?
Изменить для ясности: сегодня он расширяется до ((void *)0)
, (0)
или (0L)
. Однако были давно забыты архитектуры, где это было неверно, и NULL расширился до другого адреса. Что-то вроде
#ifdef UNIVAC
#define NULL (0xffff)
#endif
Я ищу пример такой машины.
Обновить для решения проблем:
Я не имел в виду этот вопрос в контексте нынешних стандартов или не расстраивал людей своей неправильной терминологией. Однако мои предположения были подтверждены принятым ответом:
Более поздние модели использовали [blah], очевидно, как сосок для всего сохранившегося плохо написанного кода на C, который сделал неправильные предположения.
Для обсуждения нулевых указателей в текущем стандарте см. этот вопрос.