[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: