Иногда можно прочитать, что старые компиляторы C имели определения NULL
, которые не были 0
или (void *)0
. Мое понимание стандарта C заключалось в том, что даже если битовый шаблон платформы для нулевого указателя отличен от нуля, целое число 0, приведенное к указателю (явно или неявно), по-прежнему является нулевым указателем и хранится внутри как бит нулевого указателя платформы. шаблон.
А вот например, здесь написано:
В некоторых старых компиляторах C
NULL
по-разному определяется для некоторых странных вещей, поэтому с ним нужно быть осторожнее.
Я помню, как читал это время от времени в других местах. Если это не устойчивая городская легенда, какие другие определения NULL
использовались?
0L
в старые недобрые времена до стандарта C. - person Jonathan Leffler   schedule 30.06.2013