- •5.Модульное программирование
- •5.1. Методы и проблемы модульного программирования
- •5.1.1. Реализация модульности за счет библиотек макроопределений
- •5.1.2. Реализация модульности за счет связывания объектных модулей
- •Объединение логических сегментов
- •Описание межмодульных обращений
- •5.2. Библиотеки объектных модулей
- •5.2.1. Создание библиотек объектных модулей и операции над ними
- •Команды библиотекаря
- •5.2.2. Использование библиотек объектных модулей
5.2. Библиотеки объектных модулей
Библиотека представляет собой совокупность объектных модулей, объединенных в одном файле. Как правило, в библиотеку включаются модули, реализующие некоторые функции общего назначения, с целью их использования в последующих разработках. Эти модули оформляются в виде подпрограмм, и в результате их раздельной трансляции формируются соответствующие файлы .obj.
5.2.1. Создание библиотек объектных модулей и операции над ними
Для создания библиотек из объектных модулей служит программа-библиотекарь LIB. Формат командной строки для ее вызова имеет вид:
LIB {Имя_старой_библиотеки}{Команда}{Имя_файла_листинга}
{,Имя_новой_библиотеки}{;}
Первый параметр командной строки указывает имя файла библиотеки, над которой будут выполняться заданные операции. По умолчанию используются файлы с расширением .lib.
Второй параметр определяет операцию, выполняемую над библиотекой.
Третий параметр указывает имя файла листинга перекрестных ссылок библиотеки, который содержит два списка:
1) список общих идентификаторов, входящих в несколько модулей библиотеки с указанием их имен;
2) список модулей библиотеки с указанием содержащихся в них общих идентификаторов.
Четвертый параметр командной строки вызова LIB определяет имя файла выходной библиотеки. Библиотека с указанным именем будет создана путем копирования старой библиотеки, и все операции будут выполняться над ней. При отсутствии этого параметра все операции выполняются над старой библиотекой, но ее неизмененная копия сохраняется в файле .bak.
Операции над библиотекой задаются с помощью команд библиотекаря LIB.
Команды библиотекаря
Команды LIB служат для создания и сопровождения библиотек, а также выполнения различных операций над ними:
1) добавление, удаление, замену, копирование и перемещение модулей;
2) объединение, тестирование и просмотр каталога библиотек.
Добавление модуля в библиотеку осуществляется командой
+Имя_объектного файла
Модуль, находящийся в объектном файле, включается в библиотеку под именем, указанном в директиве NAME. Если эта команда задана с именем несуществующей библиотеки, то создается новая библиотека.
Удаление модуля из библиотеки осуществляется командой
Имя_модуля
Замена модуля в библиотеке выполняется командой
+Имя_модуля
Модуль с указанным именем замещается модулем из объектного файла с тем же именем. При этом LIB сначала удаляет модуль из библиотеки, а затем ищет файл.
Копирование модуля из библиотеки осуществляется командой
Имя_модуля
Модуль с указанным именем копируется из библиотеки в объектный файл с тем же именем и остается в библиотеке.
Перемещение модуля из библиотеки реализуется командой
Имя_модуля
Эта команда выполняется аналогично команде копирования с той лишь разницей, что после копирования модуль удаляется из библиотеки.
Объединение библиотек осуществляется командой
+Имя_библиотеки
Содержимое указанной библиотеки добавляется в конец старой библиотеки. В этом случае нельзя опускать расширение имени добавляемой библиотеки, так как иначе указанное имя будет интерпретироваться как имя объектного файла.
Между знаками выполняемой операции и указываемыми именами не должно быть пробелов.
Тестирование библиотеки выполняется в случае задания в командной строке вызова LIB только имени библиотеки с последующим символом ;, то есть командой
LIB Имя_библиотеки;
Оно заключается в проверке корректности всех входов в библиотеку и находящихся в ней модулей. LIB автоматически тестирует все модули при добавлении их в библиотеку.
Для просмотра содержимого библиотеки необходимо получить ее каталог, который может быть помещен либо в файл, либо на экран дисплея.
Файл с каталогом библиотеки создается командой вида:
LIB Имя_библиотеки, Имя_библиотеки.dir
и представляет собой файл с указанным именем и расширением dir.
Для отображения каталога библиотеки на экране может использоваться команда
LIB Имя_библиотеки,con
Наряду с именами объектных модулей каталог содержит перечень тех имен каждого модуля, которые указаны в операторе PUBLIC. Это напоминает, какие имена должны использоваться в прикладной программе при ссылках на процедуры, переменные и константы, определенные в вызываемых ею модулях библиотеки.
На практике библиотекарь LIB, как правило, вызывается следующим образом:
1) LIB в этом случае все входные параметры запрашиваются и вводятся в диалоговом режиме;
2) LIB OBJECT+MUL32,,в этом случае модуль из файла MUL32.obj будет добавлен или создаст библиотеку OBJECT.lib;
3) LIB OBJECT,OBJECT.dirв этом случае будет создан файл каталога библиотеки OBJECT.dir;
4) LIB OBJECT,conотображение каталога библиотеки OBJECT.lib на экране.