Как создавать переиспользуемые библиотеки на C: пошаговое руководство

11

C — минималистичный язык. Он предоставляет лишь базовые средства программирования. У вас есть переменные, циклы и управление потоком выполнения. Вот и всё. Если вам нужно читать ввод с клавиатуры или выводить данные на экран, в C нет встроенных для этого функций. Вам приходится писать их самостоятельно или использовать библиотеки.

Именно поэтому библиотеки в C так важны. Это фрагменты кода, которые программисты выделяют из своих проектов, чтобы сделать их переиспользуемыми. Скорее всего, вы уже использовали стандартную библиотеку ввода-вывода, или stdio, не задумываясь об этом. Но помимо неё существуют библиотеки для работы с математикой, строками и временем. Вы также можете создавать свои собственные.

Разделение кода на модули упрощает его тестирование, отладку и понимание. Это также позволяет переиспользовать логику в разных программах. Давайте посмотрим, как взять монолитный скрипт и превратить часть его кода в переносимую функцию.

Извлечение логики из монолита

Рассмотрим следующую программу на C. Она заполняет массив случайными числами, сортирует его с помощью алгоритма пузырьковой сортировки и выводит результаты.

Логика сортировки здесь скрыта внутри main. Чтобы сделать её переиспользуемой, нам нужно извлечь пузырьковую сортировку.

Создание базовой функции

В этом примере массив a и константа MAX являются глобальными. Это означает, что функция сортировки не обязательно требует параметров для доступа к ним. Однако хорошие практики программирования диктуют использование локальных переменных для счетчиков циклов (x, y, t ), чтобы сделать функцию самодостаточной.

Вот отрефакторенный код. Мы изолировали логику сортировки в функцию bubble_sort.

Вы передаете количество элементов в bubble_sort вместо жестко заданного MAX. Это работает. Но код все еще привязан к глобальному массиву a.

Обобщение для истинной переиспользуемости

Функция является по-настоящему переиспользуемой только в том случае, если она не зависит от глобального состояния. Мы можем еще больше обобщить bubble_sort, передавая сам массив в качестве параметра.

Измените сигнатуру функции на:

Это указывает компилятору принимать массив целых чисел любого размера. Тело функции bubble_sort не меняется. Вам нужно лишь обновить вызов в main :

Обратите внимание, что мы не используем &a в вызове функции. Возможно, вы ожидаете передать адрес, поскольку сортировка изменяет массив, но в C массивы преобразуются в указатели при

Попередня статтяRoku Streaming Stick: объяснение версий MHL и HDMI
Наступна статтяКак телевидение эволюционировало от катодных лучей до цифровых экранов высокого разрешения