Re: NULL и g++
On Tue, 26 Sep 2000, Alexander Kotelnikov wrote:
> On Tue, Sep 26, 2000 at 09:49:24AM +0500, Vlad Harchev wrote:
> > > Я хочу, чтобы в моей C++ программе NULL'ом был не (void*)0 и не __null,
> > > а просто int 0, как оно и дожно быть в плюсах, насколько я понимаю.
> >
> > Никак оно не должно быть. NULL - просто широко используемый макрос с типом
> > указатель на void и значением 0. Можно вместо NULL писать ((void*)0) если так
> > удобнее.
>
> Это в C. В C++ NULL'а кажется нет, а Страуструп пишет, что есди уж очень
> надо, то сделайте так:
> > > const int NULL=0;
Так делать глупо с точки зрения производительности - компилятор не будет
знать значение константы NULL при компиляции - будет выдавать код для загрузки
этой константы из памяти вместо прямой инструкции на сравнение с нулем.
> > Для чего? Чтобы нулевые указатели при выводе в поток как строки говили 0 а не
> > "(null)" ? Таким образом не получится.
>
> получится.
Если только выводить NULL в поток напрямую, без кастинга, как например:
cout << NULL;
У меня в коде лично такое ни разу не встречалось :)
А вот
cout << (char*)NULL;
по прежнему будет писать "(null)".
> > Короче, я не вижу никакой пользы от такой подмены (но работать будет, может
> > преджупрежедений будет больше).
>
> использование NULL в арифметических выражениях в качестве 0 в win32 очень
> распространено :(, а я модифицирую код работающий там.
Да? Ни разу не видел и сам не юзал. Что-то очень странный код ты хакаешь :)
> --
> Alexander Kotelnikov
> Saint-Petersburg, Russia
>
Best regards,
-Vlad
Reply to: