![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| semibug |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 27.3.2009 Репутация: нет Всего: нет |
Вопрос такой.
Какими способами можно определить в программе был ли включен в компиляцию и линковку определенный модуль. Т.е. например при запуске программа выводит в консоль сообщение, о том что один из модулей с исходным кодом не включен в сборку. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
можно определить define для каждого модуля
|
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
и что это даст? дефайн же доступен только внутри того модуля |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
кажется опять неправильно понял вопрос. исправляюсь : можно завести класс Модуль со статическим хранением списка всех созданных объектов и в каждом модуле определить такой объект, тогда из main можно будет получить доступ к этому списку. сейчас дам примерчик. |
|||
|
||||
| mes |
|
||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
P.S. пример показательный, чего не хватает (деструктора, тайпдефоф и т.д) добавить по вкусу. Это сообщение отредактировал(а) mes - 19.6.2009, 13:44 |
||||||
|
|||||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
дубль
Это сообщение отредактировал(а) Леопольд - 19.6.2009, 13:44 -------------------- вопросов больше чем ответов |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
создайте приведенный примерчик, посмотрите результат, а потом из списка компиляции удалите например файл cpp1.cpp и сравните результат с первоначальным
|
|||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Вопрос непонятен. Нельзя поподробнее? Особенно поможет конкретный пример, для чего это надо.
Ещё мне кажется что не обязательно дожидаться запуска программы, уверен можно сделать статическую проверку в случае которой препроцессор/линковщик выдаст вполне осмысленную ошибку в виде имени класса, всё зависит от того что именно надо. Это сообщение отредактировал(а) Леопольд - 19.6.2009, 13:47 -------------------- вопросов больше чем ответов |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
так в том то и дело, что проект вполне работоспособный без этого модуля, однако в главной части программы хочется знать какие модули присутствуют в теле программы. |
|||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Я понимаю что он работоспособный, иначе это бессмысленно. Просто я говорю что эту задачу наверняка можно решить статически. -------------------- вопросов больше чем ответов |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Если из при компиляции из исходного кода нужно управлять, какие модули подключить, какие нет, то поможет препроцессор - я первоначально подумал, что речь идет как раз об этом когда советовал про define. Но Alek86, обратил внимание, что речь идет о несколько другом, а именно : Из главного модуля нужно узнать какие модули к нему прилинковали. Это на уровне компиляции невозможно, так как линковка происходит "задолго" после компиляции, и в данном случае поможет только динамическая регистрация модулей. Это сообщение отредактировал(а) mes - 19.6.2009, 14:14 |
|||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Не спорю, препроцессор в этом не поможет. Но можно попытаться спровоцировать обшибку компоновки. -------------------- вопросов больше чем ответов |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Так зачем провоцировать ошибку, если человек хочет получить готовую работающую прогрaмму с определенным набором модулей ? хотя спровоциовать ошибку и не трудно, но в задачу это, имхо, не входит :
Это сообщение отредактировал(а) mes - 19.6.2009, 14:55 |
||||
|
|||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Вот потому я его и спросил. Зачем ему это надо?
-------------------- вопросов больше чем ответов |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
можно рассматривать как программу со статически подключаемыми плагинами. Это сообщение отредактировал(а) mes - 19.6.2009, 15:36 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |