JavaRush /Курсы /Harvard CS50 /Библиотеки Си

Библиотеки Си

Harvard CS50
1 уровень , 13 лекция
Открыта

Вы, наверное, уже задались вопросом, что означает первая строка программы на Cи: 

#include &ltstdio.h>

Какова её роль и можно ли обойтись без неё? Строка #include делает очень важную вещь: она подключает библиотеки уже написанного кода к вашей программе. 

Имя подключенной библиотеки идет в угловых скобках (<>) и носит расширение (.h). Если бы не было библиотек, то любое, самое элементарное действие, пришлось бы каждый раз описывать снова и снова. Подключенная нами библиотека содержит функции ввода/вывода. Именно она позволяет нам использовать функцию printf() для вывода на экран. То есть, если бы мы не написали строку #include &ltstdio.h>, но оставили в теле программы функцию printf (), при попытке запуска мы бы получили ошибку! Потому что без этой библиотеки компилятор не знает, что такое printf()

Есть библиотеки стандартные, они составляют словарный запас языка. Функция printf() не встроена в компьютер, но входит в стандартную библиотеку языка Cи. То есть, некий программист ранее написал её и включил в библиотеку. Теперь другие могут ею пользоваться, не изобретая велосипед. Чтобы компилятор её «понял», подключаем &ltstdio.h>

Есть и другие стандартные библиотеки, используемые в процессе прохождения CS50. Например, библиотека строк string.h, где описаны операции со строками (определение длины, сложение и прочее).

По сравнению с другими популярными языками программирования, количество стандартных библиотек Cи очень невелико. Но есть самописные, чаще всего — более узкоспециализированные библиотеки. Так, библиотека cs50.h была создана специально для студентов CS50

Самое время сделать важное замечание: помимо написания программ, решения задач с помощью собственного кода, хороший разработчик обладает еще одним важным навыком: знанием инструментов, уже написанных и умением использовать их (чужие библиотеки), чтобы не тратить время на изобретение «колеса».

Так, если вы находитесь в процессе решения нудной или сложной задачи, которая при этом кажется довольно распространенной, привыкайте задавать себе вопрос: «а не написал ли её решение кто-нибудь другой?» Велики шансы, что так оно и есть, и вы можете найти эту функцию в существующей библиотеке.

В технических терминах, библиотека — это двоичный файл, полученный путем объединения в коллекцию объектных файлов, используя компоновщик. Объектные файлы — это те файлы с расширением (*.o), которые вы получаете при компиляции приложений. 

Комментарии (6)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Max Filinn Уровень 2
16 марта 2021
Спасибо за урок👍🏻
Taras Levko Уровень 0
23 мая 2019
а как можно посмотреть, какие еще функции добавляет нестандартная библиотека. Например cs50.h?
Victor Уровень 3
6 января 2019
06.01.2019г. проехали 1.13
Eugene Kim Уровень 7
7 июля 2018
Век живи век учись))
Мария Махонова Уровень 1
13 марта 2018
Сейчас функции навроде GetString переименованы в get_string. Список обновлений тут https://docs.cs50.net/2017/x/new.html#cs50-library
m0h49 Уровень 4
6 марта 2018
Если быть более точным include подключает заголовочные (header) файлы (а не библиотеку), в заголовочном файле как правило содержатся прототипы функций, а подключением библиотеки занимается компилятор, а точнее эта работа линковщика:-P