[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Программирование: Разработка и отладка программ


Глава 24. Функции, примеры программ и библиотеки

Для экономии памяти и более эффективной компоновки программ функции хранятся в виде библиотек. Библиотека - это файл данных, содержащий копии отдельных файлов и управляющую информацию, которая позволяет получать доступ к отдельным файлам. Библиотеки располагаются в каталогах /usr/ccs/lib и /usr/lib. По общепринятому соглашению имена большинства из них задаются в виде libимя.a, где имя определяет конкретную библиотеку.

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

#include <stdio.h>

Для вызова стандартных функций языка C из библиотеки libc.a не нужно выполнять никаких специальных действий. Команда cc автоматически находит эту библиотеку для функций, вызываемых в данной программе. Однако, если вы вызываете функцию из другой библиотеки, необходимо сообщить компилятору имя этой библиотеки. Если в вашей программе используются функции из библиотеки libимя.a, то компилируйте программу с флагом -lимя(L в нижнем регистре). Для компиляции программы myprog.c, в которой используются функции из библиотеки libdbm.a необходимо ввести команду

cc myprog.c -ldbm

Можно задать несколько флагов -l (L в нижнем регистре). Флаги обрабатываются в том порядке, в котором указаны.

Если вы планируете использовать функцию из библиотеки Berkeley Compatibility Library, то необходимо сначала подключить библиотеку libbsd.a, и только потом - библиотеку libc.a, как показано в следующем примере:

cc myprog.c -lbsd

При возникновении ошибки большинство функций возвращают значению -1 и записывают код ошибки во внешнюю переменную errno. Переменная errno объявляется в файле sys/errno.h, кроме того, в этом файле определяются константы для всех возможных исключительных ситуаций.

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

Примечания:
  1. Ниже приведен список устаревших функций wString 64-разрядной библиотеки libc.a. Здесь же приводятся соответствующие функции 64-разрядной библиотеки libc.a. Функции 32-разрядной библиотеки libc.a описаны в разделе Функция wstring. Соответствующие функции для 64-разрядной библиотеки libc.a указаны в Списке функций широких символов (Список функций для работы с широкими символами).

    Только 32-разрядная64-разрядный эквивалент 
    wstrcat                     wcscat
    wstrchr                     wcschr
    wstrcmp                     wcscoll
    wstrcpy                     wcscpy
    wstrcspn                    wcscspn
    wstrdup                     Не поддерживается и не имеет эквивалента
    wstrlen                     wcslen
    wstrncat                    wcsncat
    wstrncpy                    wcsncpy
    wstrpbrk                    wcspbrk
    wstrrchr                    wcsrchr
    wstrspn                     wcsspn
    wstrtok                     wcstok
    
  2. В начале всех программ, работающих с многобайтовыми, широкими или определяемыми локалью символами, необходимо вызвать функцию setlocale. Дополнительная информация по этому вопросу приведена в разделе Функции для поддержки национальных языков - Обзор.
  3. При программировании в среде с несколькими нитями для сохранения целостности данных необходимо применять реентерабельные функции. См. "Список функций программирования с несколькими нитями" (Список функций для работы в среде с несколькими нитями)

Связанная информация

функция setlocale

Список функций для работы со 128-разрядными числами двойной точности

Список функций для работы с символами

Список функций перекодировки

Список функций для создания выполняемых программ

Список функций для работы с файлами и каталогами

Список вектор-векторных функций для FORTRAN BLAS уровня 1

Список матрично-векторных функций для FORTRAN BLAS уровня 2

Список функций для работы с матрицами для FORTRAN BLAS уровня 3

Список функций библиотеки форматов

Список функций для работы с логическими томами

Список функций работы с памятью

Список функций управления памятью

Список функций поддержки национальных языков

Список математических функций

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

Список функций для работы со 128-разрядными числами двойной точности

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

Список функций для работы в среде с несколькими нитями

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

Список функций защиты и контроля

Список функций обработки строк

Краткая справка по библиотеке работы с нитями

Список функций методов ввода

Список функций поддержки национальных языков

Пример программы для работы с символами

Пример программы поиска и сортировки

Список библиотек операционной системы

Библиотека librs2.a

Раздел Список служб управления данными времени книги Руководство по управлению системой AIX 5L версии 5.1: Операционная система и устройства.


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]