Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник 357.docx
Скачиваний:
27
Добавлен:
30.04.2022
Размер:
1.75 Mб
Скачать

13.4 Практические аспекты создания библиотек на языке Си

Библиотеки позволяют использовать разработанный ранее программный код в различных программах. Таким образом, программист может не разрабатывать часть кода для своей программы, а воспользоваться тем, что входит в состав библиотек. Обычно код библиотек отличается качеством, позволяет писать более ясный код, понятный большинству программистов.

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

У каждой библиотеки должен быть свой заголовочный файл, в котором должны быть описаны прототипы (объявления) всех функций, содержащихся в этой библиотеке.

При компиляции программы библиотеки подключаются компоновщиком (linker). Если программе требуются только стандартные библиотеки, то дополнительных параметров передавать не надо, во всех остальных случаях при компиляции программы требуется указать имя библиотеки и ее местоположение. Это может настраиваться средой разработки при установке соответствующих параметров или указываться в аргументах командной строки при компиляции.

Библиотеки бывают двух видов — статические и динамические. Код первых при компиляции полностью входит в состав исполняемого файла, что делает программу легко переносимой. Код динамических библиотек не входит в исполняемый файл, последний содержит лишь ссылку на библиотеку. Если динамическая библиотека будет удалена или перемещена в другое место, то программа работать не будет. С другой стороны, использование динамических библиотек позволяет сократить размер исполняемого файла. Также если в памяти находится две программы, использующие одну и ту же динамическую библиотеку, то последняя будет загружена в память лишь единожды.

Последовательность шагов создания статической библиотеки следующая.

1) Создать каталог проекта и разметить в нем все файлы кодов функций разрабатываемой библиотеки.

2) Собрать объявления всех функций в один заголовочный файл.

3) Выполнить настройку среды или задать параметры командной строки для построения библиотеки.

4) Построить проект.

При использовании разработанных библиотечных функций в новом проекте необходимо подключать заголовочный файл библиотеки: через относительный адрес:

#include "../library/mylib.h"

Две точки обозначают переход в каталог на уровень выше, т. е. родительский по отношению к project, после чего путь продолжается во вложенный в родительский каталог library. Можно указывать и абсолютный путь.

13.5 Контррольные задания для совместной разработки библиотеки

1. Преобразовать функции, разработанные в работе 9, так чтобы в качестве исходных данных функция paint() получала структуру с координатами окна для вывода символов, а для Calc() с его актуальными размерами.

Так структура описывающая размеры прямоугольника имеет вид:

struct rectangle {

Int w, h; // размеры прямоугольника

};

А структура, предназначенная для его отображения:

struct paint_rectangle {

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]