Найти в Дзене
D21nk Master

Внутри библиотек библиотекари?

Теперь мы с вами совсем взрослые ребята и пишем более "правильный" код,в котором у функции main тип int.Сегодня мы продвинемся ещё дальше и научимся составлять свои собственные библиотеки,так же я вам расскажу почему до этого момента на самом деле мы на прямую библиотеками не пользовались.

Вас это возможно шокирует,но библиотеки не имеют расширение .h,это расширение происходит от слова "header" или заголовочный.В подобных файлах хранят подключения других библиотек и прототипы функций.

Прототип функции-это переопределение самой функции.Все дело в том,что не всем бывает удобно читать код,если над main написано несколько функций,а если написать их после-то компилятор просто будет ругаться,что просто не видит эту функцию до main.

Прототипы функций можно использовать так:

тип_данных_функции ИмяФункции(тип_данных аргумента...);

Тип данных и имя должны совпадать,в случае с аргументами-имена даже не обязательно писать,достаточно будет лишь типов данных аргументов.Пример:

void printNumber(int);//прототип

int main()

{

//всё работает

printNumber(10);

return 0;

}

//сама функция

void printNumber(int number)

{

printf("Your number:%d\n",number);

}

С этим разобрались,теперь разберёмся с созданием своих собственных заголовочных файлов.

На самом деле тут ничего хитрого или сложного нет,отличие от готовых библиотек-мы помечаем собственные библиотеки кавычками.Если наш заголовочный файл не в текущей директории-то придётся писать весь путь.

Допустим у вас есть некоторые собственные функции,которые вам удобнее хранить в отдельном файле.За пример возьмём всё туже функцию printNumber.

Создадим файл function.c с нашей функцией:

#include <stdio.h> //иначе не будет работать prinf

void printNumber(int number)

{

printf("Your number:%d\n",number);

}

В той же папке создадим заголовочный файл function.h:

//подключаем нашу библиотеку

#include "function.c"

//прототип нашей функции

void printNumber(int number);

И после в основной программе уже не нужно будет подключать stdio.h,мы уже ею пользуемся в файле function.c:

#include "function.h"

int main()

{

printNumber(10);

}

К чему такие сложности? Почему бы не писать всё в одном файле? Во время создания больших программ такой подход ни раз выручает.Просто-напросто упрощает исправление кода,потому как компилятор пишет в каком файле возникает ошибка.

В заключение добавлю,что не всегда обязательно создавать заголовочный файл,как в данном примере-можно просто подключить сразу function.c,так же при больших проектах можно отделить "кучу" подключаемых библиотек в отдельный заголовочный файл.

Домашнее задание:переписать аналог программы wc с функцией по подсчёту символов в отдельном файле.

С вами был D21nkMaster.Желаю успехов!