|
2 / 2 / 1
Регистрация: 04.02.2010
Сообщений: 143
|
|
Разбить программу на модули22.10.2012, 15:23. Показов 4310. Ответов 26
Метки нет (Все метки)
Не могу найти информацию по условной компиляции. Точнее кучу описаний деректив препроцессора С++ найти можно, но вот какого-то более конкретного описания разбиения программы на модули я не увидел.
Есть желание разбить программу на модули. Причем так, что бы отдельно можно было подключать и отключать модули. То есть у меня есть куча файлов functNN.cpp и functNN.h как мне можно в main.cpp подключать и отключать компиляцию этих модулей? Где найти информацию, можете подсказать?
0
|
|
| 22.10.2012, 15:23 | |
|
Ответы с готовыми решениями:
26
Разбить программу на модули Программу разбить на модули |
|
|
||||||
| 22.10.2012, 15:44 | ||||||
0
|
||||||
|
2 / 2 / 1
Регистрация: 04.02.2010
Сообщений: 143
|
|
| 22.10.2012, 15:49 [ТС] | |
|
так оно так, но мне нужна условная компиляция еще
0
|
|
|
2 / 2 / 1
Регистрация: 04.02.2010
Сообщений: 143
|
|
| 22.10.2012, 16:01 [ТС] | |
|
я наверное сам до конца не могу правильно объяснить что мне нужно реализовать
допустим есть func1.h и func1.сpp, которые уже подключенные к проекту. в func1.h объявлены несколько функций и в cpp файлы они реализованы. функции вызываются на разные события при работе программы, например на Form->Create и Form->Close тут у меня вопрос, как используя условную компиляцию через #ifdef включать или выключать выполнения этих функций, ничего не меняя в обработчики событий
0
|
|
|
Практикантроп
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
|
||||||
| 22.10.2012, 17:35 | ||||||
|
я, может, тоже не все понимаю... А вот такое начало, это разве не условная компиляция?__
0
|
||||||
|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
||||||
| 22.10.2012, 17:44 | ||||||
|
Может так:
0
|
||||||
|
2 / 2 / 1
Регистрация: 04.02.2010
Сообщений: 143
|
||||||||||||||||
| 22.10.2012, 19:41 [ТС] | ||||||||||||||||
|
Попробовал реализовать, и что идет не так.
На форме есть Label1, Edit1, Button1 По созданию формы в Label1 выводится число 123 функцией change_label() По клику Button1 в Edit1 выводится число 321 функцией change_edit() функции change_label и change_edit описаны в file1.h и file.cpp имеем Unit1.cpp
при комментировании - не работали
0
|
||||||||||||||||
|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
||||||
| 23.10.2012, 00:26 | ||||||
0
|
||||||
|
2 / 2 / 1
Регистрация: 04.02.2010
Сообщений: 143
|
|
| 23.10.2012, 10:22 [ТС] | |
|
gumi250, от того, что вы во вторую функцию добавили код из первой, ничего не заработало,
0
|
|
|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
|
| 23.10.2012, 10:30 | |
|
painless, чего не заработало то? Вы написали бы толком чего хотите. Приложили бы проект или листинг, какую ошибку пишет или чего не так выдает, мы же не телепаты.
0
|
|
|
2 / 2 / 1
Регистрация: 04.02.2010
Сообщений: 143
|
||||||||||||||||
| 23.10.2012, 10:47 [ТС] | ||||||||||||||||
|
В принципе необходимо, что бы при определение #define ... в Unit1.cpp включалось или выключалось выполнение функций из файла func1.h
что есть в Unit1.cpp
0
|
||||||||||||||||
|
Практикантроп
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
|
||||||
| 23.10.2012, 10:55 | ||||||
|
Не знаю..., я вот так только что сделал, у меня работает__
0
|
||||||
|
2 / 2 / 1
Регистрация: 04.02.2010
Сообщений: 143
|
|
| 23.10.2012, 11:05 [ТС] | |
|
nick42, это все хорошо, а как сделать все таки одним файлом?
0
|
|
|
Практикантроп
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
|
||||||
| 23.10.2012, 11:12 | ||||||
|
Ну, для конкретно вашего случая вот так сгодится__
0
|
||||||
|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
|||||||
| 23.10.2012, 11:13 | |||||||
0
|
|||||||
|
Практикантроп
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
|
|
| 23.10.2012, 11:17 | |
|
вот весь наборчик...
Кликните здесь для просмотра всего текста
//-------------------------- файл Unit1.cpp ---------------------------------
#include <vcl.h> #pragma hdrstop #define FUNC1 #ifdef FUNC1 #include "func1.h" #endif #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- #ifndef FUNC1 String TForm1::change_label() { return "0"; } int TForm1::change_edit() { return 0; } #endif //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Label1->Caption = change_label(); Edit1->Text = change_edit(); } //--------------------------------------------------------------------------- //--------------------------файл Unit1.h ------------------------------------ #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // IDE-managed Components TLabel *Label1; TEdit *Edit1; TButton *Button1; void __fastcall Button1Click(TObject *Sender); private: // User declarations public: // User declarations __fastcall TForm1(TComponent* Owner); #ifndef FUNC1 String change_label(); int change_edit(); #endif }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif //--------------------------файл Func1.h ------------------------------------ #ifndef Func1H #define Func1H class Dopp { public: String change_label(); int change_edit(); }; String change_label() { return "123"; } int change_edit() { return 321; } #endif //---------------------------------------------------------------------------
0
|
|
|
2 / 2 / 1
Регистрация: 04.02.2010
Сообщений: 143
|
|
| 23.10.2012, 11:36 [ТС] | |
|
nick42, ваш вариант мне не нравится дополнительными пустыми функция в Unit1.h
Что-то все равно у меня ничего не работает ![]() При переносе #define func1 в Unit.h всплыла новая ошибка, теперь компилятор ругается Call to undefined function 'change_edit'
0
|
|
|
Практикантроп
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
|
|
| 23.10.2012, 11:40 | |
|
Тогда советуйтесь с Архангельским, или кто там вам ближе..., желательно с начальных страниц.
0
|
|
| 23.10.2012, 11:40 | |
|
Помогаю со студенческими работами здесь
20
Разбить программу на модули Как программу на VB разбить на модули? Как грамотно разбить программу на модули
Разбить програмку на модули Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|