|
2 / 2 / 1
Регистрация: 04.02.2010
Сообщений: 143
|
|
Разбить программу на модули22.10.2012, 15:23. Показов 4350. Ответов 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 разбить на модули? Как грамотно разбить программу на модули
Разбить програмку на модули Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный отбор элементов справочника Номенклатура по группе 1С
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор под наименованию группы (на. . .
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
Программный отбор элементов справочника Сотрудники по перечислениям 1С
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит предопределенное значение перечислений.
Процедура. . .
|
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|