Как говорится в comp.lang.c FAQ, существуют архитектуры, где нулевой указатель не все биты нуль. Итак, вопрос в том, что на самом деле проверяет следующую конструкцию:
void* p = get_some_pointer();
if (!p)
return;
Я сравниваю p
с машинным нулевым указателем или я сравниваю p
с арифметическим нулем?
Должен ли я писать
void* p = get_some_pointer();
if (NULL == p)
return;
вместо этого быть готовым к таким архитектурам или это просто моя паранойя?