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

Re: NULL и g++



On Wed, 27 Sep 2000, Eugene Osintsev wrote:

 Hi, 

> Привет, Влад!
> 
> On Tue, 26 Sep 2000, Vlad Harchev wrote:
> 
> >> Это в C. В C++ NULL'а кажется нет, а Страуструп пишет, что есди уж
> >> очень надо, то сделайте так:
> >> const int NULL=0;
>  
> > Так делать глупо с точки зрения производительности - компилятор не
> > будет знать значение константы NULL при компиляции - будет выдавать
> > код для загрузки этой константы из памяти вместо прямой инструкции на
> > сравнение с нулем.
> 
> Ничего глупого здесь нет. Компилятор не хуже нас с Вами видит, что это
> константа, и в состоянии сообразить, что можно подставить инструкцию
> сравнения с нулём.

 Если программа состоит из более чем из одного исходного файла, то все файлы
должны узнавать о существовании константы через хидер, типа

extern const int NULL;
И только в одно cpp файле должно стоять 
	const int NULL=0;
Так как остальные файлы сырца видят только "extern const int NULL"
они _вообще_ не знают о значении этой константы, и им придется загружать
каждый раз из памяти ее значение при сравнении! Это неоптимально.

 Более оптимальный вариант
enum { NULL = 0 };

 Тогда все модули будут видить и значение NULL, и компилер сможет генерить
более оптимальный код.



 Best regards,
  -Vlad



Reply to: