Лабораторный практикум по основам языка С++Специальность: Проектирование авиационных двигателей
|
Тема 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
или
в одном каталоге с основной программой.
Однако, если библиотека располагается в некотором специфическом месте, то вместе с именем следует указать полный путь к ней.
Следует отметить, что такая организация является не корректной, поскольку привязывается к текущему состоянию файловой системы.
Случайное удаление файла библиотеки или перенос исходных текстов на другую машину или даже просто в другой каталог могут привести к
невозможности сборки такой программы.