Язык программирования C. Стандартная библиотека С. Функции ввода/вывода. Строковые функции

Страницы работы

Содержание работы

Язык программирования C (продолжение)

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

Общие замечания

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

Общие замечания

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

Общие замечания

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

Редактор связей

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

Редактор связей

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

Редактор связей

Операционная система Windows предоставляет другой вид связывания, так называемое динамическое связывание. Динамическое связывание – это процесс, при котором объектный код функции остается в отдельном файле на диске до тех пор, пока не запуститься использующая его программа. При запуске такой программы динамически загружаются затребованные, связанные с ней функции. Динамически связанные функции помещаются в специальный тип библиотек, которые называются динамически подсоединяемыми библиотеками (DLL). Они позволяют значительно сократить размер исполняемых программ.

Редактор связей

Стандартная библиотека С не содержится в динамически подсоединяемой библиотеке, но многие другие типы функций там есть. Например, при написании приложений для Windows, в DLL хранится полный набор функций программного интерфейса приложений (API – Application Program Interface). Нужно отметить, что для программы, написанной на языке С, обычно не имеет значения, хранятся ли библиотечные функции в DLL или в обычном файле библиотек.

Заголовки

С каждой функцией библиотеки связан свой заголовок. Он должен быть включен в программу с помощью директивы #include. Заголовки выполняют две важные функции. Во-первых, многие функции работают с данными собственного определенного типа, к которым должна иметь доступ основная программа, использующая эти функции. Эти типы данных задаются в заголовках, связанных с каждой функцией. Во-вторых, в заголовках находятся прототипы библиотечных функций.

Заголовки, определенные в С99

Заголовок Назначение assert.h Определяет макрос assert() ctype.h Обработка символов errno.h Выдача сообщения об ошибках float.h Задает пределы значений с плавающей точкой limits.h Задает различные ограничения locate.h Поддерживает локализацию math.h Математическая библиотека setjmp.h Поддерживает нелокальные переходы signal.h Поддерживает обработку сигналов stdarg.h Списки параметров функций с перем. чис. арг. stddef.h Некоторые часто используемые константы stdio.h Система ввода/вывода stdlib.h Смешанные объявления string.h Функции обработки строк time.h Функции, обращающиеся к системному времени

Функции ввода/вывода

Похожие материалы

Информация о работе