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

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: