Студопедия

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

КАТЕГОРИИ:

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






Семинар 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 (выражение) оператор

mylektsii.ru - Мои Лекции - 2015-2019 год. (0.007 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал