Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015

Тут можно читать онлайн Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - бесплатно полную версию книги (целиком) без сокращений. Жанр: Прочая старинная литература, издательство Вильямс, год 0101. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015 краткое содержание

Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - описание и краткое содержание, автор Стивен Прата, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - читать онлайн бесплатно полную версию (весь текст целиком)

Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - читать книгу онлайн бесплатно, автор Стивен Прата
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Первоначально официальной библиотеки С не существовало. Позже возник стандарт де-факто, основанный на реализации С для Unix. Комитет ANSI С, в свою оче-

Препроцессор и библиотека С 691

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

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

Получение доступа к библиотеке С

Способ получения доступа к библиотеке С зависит от реализации языка, поэтому вам необходимо ознакомиться с тем, насколько более общие утверждения применимы к вашей системе. Во-первых, библиотечные функции часто можно обнаружить в ряде разных мест. Например, функция getchar() обычно определена в виде макроса внуг- ри stdio.h, но функция strlen(), как правило, содержится в библиотечном файле. Во-вторых, для разных систем предусмотрены отличающиеся способы получения доступа к этим функциям. В последующих разделах в общих чертах представлены три возможности.

Автоматический доступ

Во многих системах достаточно всего лишь скомпилировать программу, т.к. многие распространенные библиотечные функции сделаны доступными автоматически.

Имейте в виду, что для используемых функций вы должны объявить их типы. Обычно это можно сделать путем включения подходящего заголовочного файла. Файлы, подлежащие включению, описаны в руководствах пользователя но библиотечным функциям. Однако в некоторых старых системах могла возникать необходимость в самостоятельном наборе объявлений функций. В этом случае тип функции снова следует искать в руководстве пользователя. Кроме того, в приложении Б приведено описание библиотеки ANSI С, группирующее функции по заголовочным файлам.

В прошлом имена заголовочных файлов не были согласованы между разными реализациями. Стандарт ANSI С группирует библиотечные функции в семейства. Для каждого семейства предусмотрен заголовочный файл с прототипами функций.

Включение файлов

Если функция определена в виде макроса, то с помощью директивы # include можно включить файл, содержащий ее определение. Часто похожие макросы собираются в заголовочный файл с подходящим именем. Например, с появлением стандарта ANSI С компиляторы С поступают с файлом ctype.li, содержащим ряд макросов, которые определяют природу символа: верхний регистр, цифра и т.п.

Включение библиотек

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

692 глава 16

Использование описаний библиотеки

Ограниченный объем книги не позволяет обсудить библиотеки полностью, но мы рассмотрим некоторые характерные примеры. Для начала обратимся к документации.

Документацию по функциям можно найти в нескольких местах. Система может иметь онлайновое руководство, а IDE-среда часто располагает онлайновой справкой. Поставщики компиляторов С иногда предоставляют руководства пользователя в печатном виде, которые содержат описание библиотечных функций, либо компакт-диск с аналогичным материалом. Многие издательства выпустили справочные пособия по функциям библиотеки С. Одни из них имеют общую природу, а другие ориентированы на определенные реализации языка. Кроме того, как упоминалось ранее, краткое описание функций содержится в приложении Б настоящей книги.

При чтении документации важно понимать заголовки функций. Описание со временем меняется. Для примера рассмотрим описание функции fread() в старой документации для Unix:

#include

freadlptr, sizeof(*ptr), nitems, stream)

FILE ‘stream;

Сначала включается подходящий файл. Типы для fread(), ptr, sizeof (*рtr) и nitems не указаны. В то время для этих элементов по умолчанию принимался тип int, но контекст проясняет тот факт, что ptr является указателем. (В ранних версиях С указатели обрабатывались как целые числа.) Аргумент stream объявлен как указатель на FILE. Объявление создает впечатление, что в качестве второго аргумента применяется операция sizeof. В действительности здесь указано, что значением этого аргумента должен быть размер объекта, указанного с помощью ptr. Часто будет использоваться операция sizeof, как показано выше, но с точки зрения синтаксиса допускается любое значение типа int.

Позже форма изменилась следующим образом:

#include

int freadlptr, size, nitems, stream,};

char *ptr;

int size, nitems;

FILE *stream;

Теперь все типы данных заданы явно, a ptr трактуется как указатель на char.

Стандарт ANSI С90 предоставляет такое описание:

#include

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

Во-первых, в нем применяется новый формат прототипа. Во-вторых, некоторые типы изменились. Тип size t определен как целочисленный тип без знака, возвращаемый операцией sizeof. Обычно им будет либо unsigned int, либо unsigned long. Файл stddef.h содержит определение typedef или #define для size_t, как и несколько других файлов, в том числе stdio.h, обычно за счет включения stddef .It Многие функции, включая fread(), часто встраивают операцию sizeof в виде части фактического аргумента. Тип size_t обеспечивает соответствие формального аргумента этому общему способу использования.

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

Препроцессор и библиотека С 693

Например, первым аргументом функции fread() может быть указатель на массив значений double или на некоторую структуру. Если фактический аргумент представляет собой указатель, скажем, на массив из 20 значений double, а формальный аргумент является указателем на void, компилятор примет вариант для подходящего типа и не уведомит о несоответствии типов.

Относительно недавно стандарты С99/С11 внедрили в описание функций новое ключевое слово restrict:

#include

size_t fread(void * restrict ptr, size_t size,

size_t nmemb, FILE * restrict stream);

А теперь давайте перейдем к обзору некоторых специфических функций.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Стивен Прата читать все книги автора по порядку

Стивен Прата - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Язык программирования C. Лекции и упражнения (6-е изд.) 2015 отзывы


Отзывы читателей о книге Язык программирования C. Лекции и упражнения (6-е изд.) 2015, автор: Стивен Прата. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x