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: