Операционная система UNIX. Руководство программиста




Включаемые файлы


В предыдущих разделах данной главы часто упоминался файл <stdio.h>, был также приведен его полный текст. <stdio.h> - это наиболее часто используемый включаемый файл при программировании на C в ОС UNIX. Разумеется, существует много других включаемых файлов.

Включаемые файлы содержат определения и описания, одновременно используемые более чем одной функцией. Как правило, имена включаемых файлов имеют расширение .h. Содержимое включаемых файлов обрабатывается препроцессором языка C во время компиляции. Для указания препроцессору о необходимости включения файла применяется директива #include, которую нужно поместить в текст программы. Вообще, директивой препроцессора считаются строки программы, начинающиеся с символа #. Чаще всего используются директивы #include и #define. Как уже говорилось, директива #include

используется для вызова (и обработки) содержимого указанного в ней включаемого файла. Директива #define указывает препроцессору, что в тексте программы необходимо заменить каждое вхождение определяемого имени на цепочку лексем. Например, директива

#define _NFILE 20

устанавливает максимальное допустимое количество файлов, одновременно открытых программой, равным 20. Полный список директив препроцессора приведен в статье cpp(1).

В тексте Справочника программиста упоминается около 45 различных включаемых файлов. При этом всегда в директиве #include имя включаемого файла изображается в угловых скобках <>. Пример:

#include <stdio.h>

Угловые скобки в этом случае обозначают, что препроцессор будет считать, что включаемый файл расположен в определенном каталоге. Как правило, таким каталогом является /usr/include. Если Вы хотите какие-либо собственные определения или описания сделать доступными для нескольких файлов, Вы можете создать .h-файл с помощью любого редактора, поместить его в подходящий каталог, и указать его имя в директиве #include следующим образом:

#include "../defs/rec.h"

В данном случае необходимо указать в кавычках ("") относительное маршрутное имя файла. Указывать полное маршрутное имя файла не рекомендуется, так как в этом случае могут возникнуть трудности при переносе программ, а также другие организационные проблемы. Чтобы не указывать полные маршрутные имена, можно при компиляции программ пользоваться опцией препроцессора -Iкаталог. Если указана эта опция, препроцессор разыскивает включаемые файлы, имена которых указаны в кавычках, следующим образом. Сначала производится поиск в каталоге, в котором расположен компилируемый файл, затем в каталогах, указанных в опции (опциях) -I, и, наконец, в каталогах из стандартного списка. Заметим также, что все включаемые файлы, имена которых указаны в угловых скобках <>, сначала отыскиваются в списке каталогов, заданных с помощью опции -I, а затем в каталогах из стандартного списка.




Содержание  Назад  Вперед