Re[4]: static members.
От: Mechanicus Беларусь  
Дата: 05.02.04 16:48
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

M>> Можно ли писать так?

M>>
 M>> 1.cpp
 M>> namespace {
 M>>  bool reg = ....;
 M>> }
 M>> 2.cpp
 M>> namespace {
 M>>  bool reg = ....;
 M>> }
 M>>

ПК>Можно.
M>> VC7.0 при линковке ругается на то, что reg уже определён в другом модуле.
M>> Разве он прав
ПК>Неправ. Ты уверен, что код привел точно?
Дело в том, что прям так выделить его в два файла у меня не получилось. У меня в файлах примерно такой код регистрации.
namespace {
    bool registered = 
        startup::ModuleLibrary::instance()->registerModule(
            cfg::Module::create()
            );
};

В различных файлах меняется либо пространстов имён cfg на другое, либо совсем другие функции регистрации вызываются, но линкер железно выдаёт.

error LNK2005: "bool `anonymous namespace'::registered" (?registered@?A0xbb0ee478@@3_NA) already defined in module3.obj

gcc всё компилирует и линкует нормально.
... << RSDN@Home 1.1.3 beta 1 >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.