Re: NULL и g++
On Wed, 27 Sep 2000, Vlad Harchev wrote:
> Если программа состоит из более чем из одного исходного файла, то все файлы
> должны узнавать о существовании константы через хидер, типа
>
> extern const int NULL;
> И только в одно cpp файле должно стоять
> const int NULL=0;
> Так как остальные файлы сырца видят только "extern const int NULL"
> они _вообще_ не знают о значении этой константы, и им придется загружать
> каждый раз из памяти ее значение при сравнении! Это неоптимально.
>
> Более оптимальный вариант
> enum { NULL = 0 };
Ничего подобного. Ваш enum полностью эквивалентен тому, если вы в хедере
напишете
const int NULL = 0;
Не надо никаких extern'ов городить. extern'ы подразумевают external
linkage в C++, что, разумеется, приводит к выделению памяти. ;-)
Я, кстати, не защищаю данный метод работы с константами. И, видимо,
из-за всех этих различий с internal и external linkage в C и C++ так
живучи #define'ы. Хотя может быть я и не прав.
И, вообще, не стоит переопределять NULL. Больше проблем нагребёшь.
--
Best regards,
Eugene
Reply to: