Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 22.08.2011, 22:02   #1
Копоть Артём
Пользователь
 
Аватар для Копоть Артём
 
Регистрация: 12.04.2009
Сообщений: 29
Печаль Многомодульные проекты в VS C++

Доброго времени суток! Задумал многомодульный проект - 1 файл .CPP основной, во втором некоторые функции. Прототипы их прописал в файле .H, приинклюдил его в первый файл.
Проблема вот в чём: у меня оба модуля используют общие переменные. Если описать их в обоих - начинаются проблемы компоновки (переменная, дескать, уже определена). Если не описать в одном - пишет "Необъявленный идентификатор" (ну это понятно). Что делать? Указание "extern" не помогает! (Я вижу только один вариант решения проблемы - сделать всё в одном модуле, но это же не дело!)
Программист - это человек, который решает совершенно непонятным вам способом проблемы, о существовании которых вы даже не подозревали.
Копоть Артём вне форума Ответить с цитированием
Старый 22.08.2011, 22:23   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,103
По умолчанию

Цитата:
Указание "extern" не помогает!
И как же вы его используете, что не помагает? Поделитесь секретом.
p51x вне форума Ответить с цитированием
Старый 22.08.2011, 23:19   #3
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Защиту от множественного подключения можно реализовать так:
Код:
#ifndef MYMODULE_H
#define MYMODULE_H
// Здесь код модуля
#endif
An1ka вне форума Ответить с цитированием
Старый 23.08.2011, 12:10   #4
Копоть Артём
Пользователь
 
Аватар для Копоть Артём
 
Регистрация: 12.04.2009
Сообщений: 29
Восклицание

Цитата:
И как же вы его используете, что не помагает? Поделитесь секретом.
Очень просто:
extern int pitch = 0;
В другом модуле пишет: необъявленный идентификатор.

Цитата:
Защиту от множественного подключения можно реализовать так:
Код:

#ifndef MYMODULE_H
#define MYMODULE_H
// Здесь код модуля
#endif
Это прописывать в заголовочном файле? Я пробовал - запихнул в этот блок описание переменных. Не помогает - пишет "идентификатор уже определён"
Программист - это человек, который решает совершенно непонятным вам способом проблемы, о существовании которых вы даже не подозревали.
Копоть Артём вне форума Ответить с цитированием
Старый 23.08.2011, 12:18   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,003
По умолчанию

потому что не надо путать обьявление с реализацией.

в модуле с переменной пишите просто int ext=0;
а где используется extern int ext;
(может можно в заголовочнике строго написать через extern, а модуле реализовать без, но я не пробовал)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.08.2011, 12:29   #6
Копоть Артём
Пользователь
 
Аватар для Копоть Артём
 
Регистрация: 12.04.2009
Сообщений: 29
Радость

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
потому что не надо путать обьявление с реализацией.

в модуле с переменной пишите просто int ext=0;
а где используется extern int ext;
(может можно в заголовочнике строго написать через extern, а модуле реализовать без, но я не пробовал)
Всё заработало, большое спасибо!!!
Программист - это человек, который решает совершенно непонятным вам способом проблемы, о существовании которых вы даже не подозревали.
Копоть Артём вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многофайловые проекты. inc Общие вопросы C/C++ 1 25.04.2012 16:57
Проекты Компаса в Делфи Versifikator Помощь студентам 10 03.06.2011 14:19
РЕКЛАМА И ИНТЕРНЕТ ПРОЕКТЫ ДЕНИС ЕЛИСЕЕВ Фриланс 0 14.03.2011 16:03
разработать проекты.... Virus Помощь студентам 2 20.06.2007 17:53