Тема 2. Библиотеки функций

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

Библиотеки подключаются при помощи директивы препроцессора #include. После директивы препроцессора указывается имя библиотеки или имя заголовочного файла библиотеки. Имя заключается в угловые скобки (для стандартных библиотек) или в двойные кавычки (для остальных библиотек).

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

#include <math.h>

А если библиотека располагается в том же каталоге, что и приложение (например библиотека mylib), то подключение библиотеки будет выглядет следующим образом:

#include "mylib.h"

В угловых скобках или в двойных кавычках указывается имя специального заголовочного файла (расширение .h образовано от английского слова header – заголовок). В заголовочных файлах приводятся прототипы функций, а реализация, обычно, размещается в файле с таким же именем, но расширение меняется на .c или .cpp в зависимости от того, какой язык программирования (Си или С++) используется для написания кода библиотеки.

Стандартные библиотеки языка Си

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

Список некоторых стандартных библиотек функций

Заголовочный файл Содержимое заголовочного файла
<ctype.h> Содержит прототипы функций, проверяющих различные характеристики символов, а также позволяющих выполнять преобразования символов.
<errno.h> Содержит макросы, полезные для сообщений об ошибках.
<float.h> Содержит пределы значений для чисел с плавающей точкой в системе
<limits.h> Содержит пределы значений для целочисленных чисел в системе
<locale.h> Содержит прототипы функций и другую информацию, которая позволяет изменять работу программы и параметры окружения в соответствии с указанными локальными (в смысле региона, страны) настройками: кодировка символов, представление чисел и т.д.
<math.h> Содержит прототипы математических функций.
<signal.h> Содержит прототипы функций и макросы для обработки различных условий, которые могут возникать во время работы программы.
<stdarg.h> Определяет макросы обработки списка параметров функции, для которой неизвестно число параметров и их тип.
<stddef.h> Содержит общие определения типов, используемых C++ для выполнения некоторых вычислений.
<stdio.h> Содержит прототипы функций ввода/вывода и информацию, используемую ими.
<stdlib.h> Содержит прототипы функций преобразования чисел в текст и текста в число, прототипы функций размещения памяти, генерации случайных чисел и других сервисных функций.
<string.h> Содержит прототипы функций обработки строк.
<time.h> Содержит прототипы функций и типы данных для функций управления временем и датой.




Стандартные библиотеки языка С++

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

Для того, чтобы использовать библиотеку языка Си достаточно указать ее имя с приставкой c, например, <stdlib.h> ==> <cstdlib> или <math.h> ==> <cmath>

Заголовочный файл Содержимое заголовочного файла
<iostream> Содержит прототипы функций, и описания классов для работы с потоками ввода вывода.
<string> Содержит описания класса строк. Более подробно будет рассмотрено в другой лабораторной работе, но следует отметить, что начинающие часто путают <string> и <string.h>, хотя это своершенно разные бибилиотеки: первая содержит описание класса string, а вторая прототипы функций языка Си для работы с символьными массивами.
<algorithm> Содержит набор функций для выполнения алгоритмических операций над контейнерами и другими последовательностями: поиск и замена элементов, сортировка, слияние, сравнение и так далее.
<iomanip> Содержит набор констант и функций для форматирования вывода в поток.




Библиотеки пользователя и заголовочные файлы

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

Видео о создании библиотек пользователя