Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

За 2005-05-20

Re: error LNK2005: VC++ 6.0

> Есть хидер (xxx.h), в котором определяется переменная и значение
> (int i=1) или функция и реализация. Затем они include-ятся в другом
> файле (yyy.h), который в свою очередь include-ится в 3-ем (zzz.h).
> На этапе линковки вылезает такое вот сообщение:
> "yyy.obj : error LNK2005: "int i" already defined in zzz.obj"

Я чего-то не пойму. Если это у тебя заголовки, какого лешего они у тебя
самостоятельно компилятся?? Как это из yyy.h и zzz.h получаются yyy.obj и
zzz.obj? Для начала ответь на этот вопрос, остальные проблемы, возможно,
сами уйдут.

--
С уважением, boroda
mailto:boroden***@s*****.ru

Номер выпуска : 4507
Возраст листа : 607 (дней)
Количество подписчиков : 515
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/370560
Получить правила : 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

   Шматко А.А. 2005-05-20 10:25:09 (#370560)

Re: error LNK2005: VC++ 6.0

> Когда-то уже писал о данной проблеме, но сейчас снова выплыла.
> Есть хидер (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-ой не отключить, да и явно должен быть какой-то куда более
> простой способ, однако моих поверхностных знаний с++ тут явно
> недостаточно. Как с этим побороться? Заранее спасибо.

Нужно всего лишь объявить эту переменную во всех остальных хидерах как 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

   2005-05-20 02:24:51 (#370402)