Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Семинар 14. Многофайловые проекты

Среда Visual C++ позволяет создавать и отлаживать программы, использующие не только стандартные, но и пользовательские библиотеки подпрограмм – модули. Модуль C++ обычно включает два файла: заголовочный файл с расширением «.h» и файл реализации с расширением «.cpp».

Заголовочный файл играет роль интерфейсной секции модуля. В него помещают объявление экспортируемых ресурсов модуля:

· прототипы (заголовки) функций,

· объявление переменных, типов и констант.

Заголовочный файл подключают командой #include ″ ИмяМодуля.h″, записываемой в файле реализации программы или другого модуля, если они используют ресурсы описываемого модуля.

Файл реализации представляет собой секцию реализации модуля. Он должен содержать команды подключения используемых модулей, описания экспортируемых функций, а также объявление внутренних ресурсов модуля.

Для создания файлов модуля и добавления их к проекту необходимо выполнить команду меню Проект/Добавить новый элемент.

Пример 14.1.. Создать модуль, содержащий функцию f1.

Проект содержит 3 файла:

Содержимое файлов:

mod1.cpp #include " mod1.h" int f1(int a) //определение функции { return a+2; }
mod1.h #ifndef modh_20120904 #define modh_20120904 //определяет значение modh_20120904 int f1(int); //объявление функции #endif
Главный.cpp #include < iostream> #include " mod1.h" using namespace std; int main() { int a=18; cout< < f1(a)< < endl; }

Дополнительные команды препроцессора в файле mod1.h позволяют исключить повторную компиляцию текста программы при многократном подключении заголовочного файла.

Имя переменной препроцессора modh_20100810 – уникальный идентификатор, который точно не встречается в других библиотеках. Для получения этого имени в примере для mod1.h использована следующая схема:

< ИМЯФАЙЛА> < РАСШИРЕНИЕ> _< ГОД> < МЕСЯЦ> < ДЕНЬ (создания)>.

 

Пример 14.2. Использование одной переменной в двух модулях

Глобальная переменная b определяется в файле modul1.cpp. Чтобы ее можно было использовать в файле modul2.cpp, она объявлена в файле modul2.h как внешняя с помощью слова extern.

Проект содержит следующие файлы:

Содержимое файлов:

modul1.h void f1(int a); //объявление функции
modul2.h void f2(); //объявление функции extern int b; //объявление переменной
stdafx.h //stdafx.h: включаемый файл для стандартных системных включаемых // файлов или включаемых файлов для конкретного проекта, // которые часто используются, но не часто изменяются #pragma once //файл будет включен только один раз   #include < iostream> using namespace std;
modul1.cpp #include " stdafx.h" int b; //определение глобальной переменной void f1(int a) //определение функции { cout< < " f1=" < < a< < endl; b=a; }
modul2.cpp #include " stdafx.h" #include " modul2.h" void f2() //определение функции { cout< < " f2: b=" < < b< < endl; }
Главный.cpp #include " stdafx.h" #include " modul1.h" #include " modul2.h" int main() { int x=2; f1(x); f2(); }
stdafx.cpp // исходный файл, содержащий только стандартные включаемые модули // stdafx.obj будет содержать предварительно откомпилированные // сведения о типе   #include " stdafx.h"   // TODO. Установите ссылки на любые требующиеся дополнительные // заголовки в файле STDAFX.H //, а не в данном файле

Обратите внимание, как к проекту добавляются стандартные модули. Все они включаются в файл stdafx.h, а затем уже этот модуль включается во все остальные. Директива pragma once обеспечивает включение данного файла в проект только один раз.

<== предыдущая лекция | следующая лекция ==>
Чтение из файла | while (выражение) оператор




© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.