![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Abyx |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 601 Регистрация: 3.11.2009 Репутация: 1 Всего: 10 |
берем .h файл
включаем его в два и более .cpp файла, компилим, и получаем ошибку что test::x определен в двух и более модулях. пишем такой код
и ошибка пропадает. как так? фича языка? фича msvc? (проверял на msvc2008 и msvc2010RC1) Это сообщение отредактировал(а) Abyx - 4.5.2010, 19:00 |
||||
|
|||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Простите за сарказм и за
![]() приходит к опытному программисту ( О ) новичок ( Н ) Н: посмотри, тут что-то не работает. Никак не пойму, то ли это TCP, то ли API, то ли MFC, то ли VPN, то ли COM, то ли DCOM, то ли MSVC, то ли STL О: сдаётся мне, что проблема в ДНК -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
HellStranger |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 1.9.2009 Репутация: -2 Всего: -1 |
Попробуй #ifndef воспользоваться. Или, если ты под студией #pragma once.
|
|||
|
||||
Abyx |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 601 Регистрация: 3.11.2009 Репутация: 1 Всего: 10 |
HellStranger, это тут ни при чем. Проблема в ODR, а не в повторном определении одной и той же сущности в одной единице трансляции.
|
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Возможно, фокус тут просто в том, что элементы шаблонов при линковке обрабатываются несколько своеобразно. Я имею в виду следующее: если использовать заголовок с шаблоном в двух единицах компиляции, то используемые функции будут инстанционированы в каждой единице, но потом при сборке остается только один экземпляр. Этому есть какое-то специальное название, но я не помню точно. Возможно, с экземплярами статических переменных поступают так же.
-------------------- ... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |