error LNK2005: VC++ 6.0
Glad to greet!
Когда-то уже писал о данной проблеме, но сейчас снова выплыла.
Есть хидер (xxx.h), в котором определяется переменная и значение
(int i=1) или функция и реализация. Затем они include-ятся в другом
файле (yyy.h), который в свою очередь include-ится в 3-ем (zzz.h).
На этапе линковки вылезает такое вот сообщение:
"yyy.obj : error LNK2005: "int i" already defined in zzz.obj"
Естественно, в ххх.h стоят #ifdef-ы, так что подключение происходит
лишь единожды. Объявлять переменную как static не подходит,
поскольку в таком случае у каждого подключившего хранится своя
копия переменной, а не одна на всех (что меня несколько озадачило).
При указании /FORCE:MULTIPLE линкеру лезут warning-и, которые
pragma-ой не отключить, да и явно должен быть какой-то куда более
простой способ, однако моих поверхностных знаний с++ тут явно
недостаточно. Как с этим побороться? Заранее спасибо.
Alles Gute!
...In Code We Trust...
Нужно всего лишь объявить эту переменную во всех остальных хидерах как extern
и все! Это говорил компилятору о том что переменная или функция объявлена в другом
заголовочном файле, а здесь она просто будет использоваться
Номер выпуска : 4506
Возраст листа : 607 (дней)
Количество подписчиков : 516
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/370402
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru