> -- ilovb писал(а):
> Ярослав, а что мешает заложить NULL в тип?Т.е. определять тип с явным указанием, что он может быть NULL.Причем в этом случае язык не должен допускать разыменования без проверки.На NULL ведь можно смотреть как на обычный тип.Допустим у нас есть указатель, который может в рантайме иметьразные типы. Например, типов два [POINTER TO Rec] и [NULL].Тогда обращение дожно быть через WITH.зы Вспышки на солнце чтоль:
В принципе так, как вы предлагаете, сделать можно. Но в любом случае, если тип [NULL], а мы попытаемся обратиться к нему как к какому-то другому типу, то должна произойти остановка программы.
И получается, что нет большой разницы, что традиционный NULL, что пустой тип NULL. И там, и там получается прерывание программы.
Думаю, что если бы был статический анализатор, который бы предупреждал о том, что может быть разыменование нулевого указателя, и не указывал бы на безопасные места, где точно не может быть разыменования нулевого указателя, то это было бы решением проблемы с NULL.