Чем отличаеться сабж ?
... << RSDN@Home 1.0 beta 6a >>
Здравствуйте, Exception, Вы писали:
E>Чем отличаеться сабж ?
Язык Си в вопросах и ответах
Вопросы 1.1, 1.3 и далее.
Там
исчерпывающе.
(=^.^=) Neko ... << RSDN@Home 1.0 beta 6a >>
Здравствуйте, Exception, Вы писали:
E>Чем отличаеться сабж ?
К тому, что уже сказано, можно добавить также то, что при использованни NULL часть компиляторов может диагностировать некоторые экзотические ошибки. Например:
#include <cstddef>
void f(int, ...);
int main()
{
f(1, 4, NULL);
}
Передача NULL (или 0 в значении null pointer constant) без явного приведения к соответствующему типу указателя в функцию с переменным количеством параметров в общем случае является ошибкой, т.к. представление указателей различных типов может различаться и представление нулевого указателя (null pointer value) соответствующего типа далеко не обязательно совпадает с представлением значения 0 целочисленного типа. Если приведенный выше вызов функции написать так:
f(1, 4, 0);
у компилятора не будет даже теоретической возможности "узнать", что предполагалась передача указателя. Если же нулевой указатель обозначен через NULL, то некоторая реализация вполне может использовать "магию" для диагностики подобных случаев. Например, по крайней мере, одна из версий GCC пользовалась этой возможностью, используя в определении NULL специальное "магическое" значение (__null__ или что-то подобное).
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен