![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| tofreesky |
|
||||||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 152 Регистрация: 9.6.2010 Репутация: нет Всего: нет |
foo.cpp
lib1.cpp
lib1.h
lib2.cpp
lib2.h
Естественно возникает конфликт: l
А теперь вопрос как грамотно поступать если есть проект в котором используется две разных библиотеки в заголовочном файле которых присутствуют одинаковые структуры? Помимо уникальных имен и неймспейсов? |
||||||||||||
|
|||||||||||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
поместить структуры каждый в свой namespace
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
можно ещё так попробовать
в обоих h-никах -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
и теряем ODR. так же, теряем ODR. и в случае вкравшейся опечатки, получаем вероятность использовать две разных декларации структуры. Это сообщение отредактировал(а) boostcoder - 19.3.2012, 11:41 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
boostcoder, borisbn, вопрос на засыпку.. а что делать если править хидеры нельзя ?
Добавлено @ 12:33 разве ? , а с продолжением цитаты полностью согласен Это сообщение отредактировал(а) mes - 19.3.2012, 12:36 |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
тогда их нужно инклудить в свой хидер, и там разруливать. по сути, декларации-то у нас все равно получится две. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
если мы их оба съинклудим, то конфликт имен... в одной единице ? как если страж стоит ? в разных ? а когда мы инклудим один и тот же хидер в разные единицы, у нас также две декларации получаются |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
можно инклюднуть так
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
borisbn,
1. и ошибка линковки 2.структура одна и та же и функции из разных либ должны уметь с ней работать.. Добавлено через 3 минуты и 7 секунд ага, но это в так и так лежит на плечах программиста.. и С++ со своим механизмом инклюдов тут не помощник.. для этого (для того чтоб избежать опечатки, но не дублирования копипаста) и выносятся общие описания в отдельный хидер. Добавлено через 7 минут и 33 секунды не верю... еще раз условие : есть две библиотеки с хидерами, которые нельзя править.. в каждом хидере описана гарантировано одна и та же структура, и набор функций для работы с ней.. нам нужно иметь возможность в нашей единице пользоваться как функциями этих библиотек, так и самой структорой.. |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
mes, декларация структуры защищена стражами? именно декларация структуры, а не всего тела хидера.
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| tofreesky |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 152 Регистрация: 9.6.2010 Репутация: нет Всего: нет |
Что такое ODR?
По поводу нейм спейсов я говорил, что кроме этого способа и стражев как-то еще можно?
Что за извращение, зачем чужие либы редактировать? Оттуда что-то вытаскивать, вставлять в другой. Выходит кроме неймспейсов нет целесообразного способа. А если язык не С++ а С? |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
tofreesky, составить свои хидеры, их и использовать
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |