Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

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





Для включения текста из файла используется команда #include, имеющая три формы записи:

#include < имя_файла > /* Имя в угловых скобках */

#include “имя_файла” /* Имя в кавычках */

#include имя_макроса /* Макрос, расширяемый до обозначения файла*/

 

где имя_макроса – это введенный директивой #define пpeпpoцессорный идентификатор, либо макрос, при замене которого после конечного числа подстановок будет получена последовательность символов < имя _ файла> либо “имя_файла”.

Существует правило, что если имя_файла – в угловых скобках, то препроцессор разыскивает файл в стандартных системных каталогах. Если имя_файла заключено в кавычки, то вначале препроцессор просматривает текущий каталог пользователя и только затем обращается к просмотру стандартных системных каталогов.

При необходимости использования в программах средств ввода-вывода в начале текста программы помещают директиву:

#include < stdio.h>

 

Выполняя эту директиву, препроцессор включает в программу средства связи с библиотекой ввода-вывода. Поиск файла stdio.h ведется в стандартных системных каталогах.

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

Кроме такого stdio.h, в заголовок программы могут быть включены любые другие файлы (стандартные или подготовленные специально). Перечень обозначений заголовочных файлов для работы с библиотеками компилятора утвержден стандартом языка. Ниже приведены названия этих файлов, а также краткие сведения о тех описаниях и определениях, которые в них включены. Большинство описаний – прототипы стандартных функций, в stdio.h, определены в основном константы (например NULL, EOF), необходимые для работы с библиотечными функциями. Все имена, определенные в стандартных заголовочных файлах, являются зарезервированными именами:

assert.h – Диагностика программ

ctype.h – Преобразование и проверка символов

errno.h – Проверка ошибок

float.h – Работа с вещественными данными

limits.h – Предельные значения целочисленных данных

locate.h – Поддержка национальной среды

math.h – Математические вычисления

setjump.h – Возможности нелокальных переходов

signal.h – Обработка исключительных ситуаций

stdarg.h – Поддержка переменного числа параметров

stddef.h – Дополнительные определения

stdio.h – Средства ввода-вывода

stdlib.h – Функции общего назначения (работа с памятью)

string.h – Работа со строками символов

time.h – Определение дат и времени

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

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

Пример 10.9

#include < stdio.h> /* Включение средств обмена */

/* Целые внешние переменные */

extern int ii, jj, 11;

/* Вещественные внешние переменные */

extern float aa, bb;

 

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

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

 

Пример 10.10

void count(void);

void estimate (double *, double *, double *);

void compare (double, double);

double gauss (double, double);

int pseudorand (void);

 

В тексты всех перечисленных функций, а также в функцию main() помещены прототипы вызываемых функций. Кроме того, в каждой функции описаны со спецификатором extern все внешние объекты, доступ к которым нужен в теле функции.

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

 

Пример 10.11

#include “main.с”

#include “count.с”

#include “estimate.с”

#include “compare.с”

#include “gauss.c”

#include “pseudo.c”

 

Имена файлов соответствуют именам функций с добавкой расширения “ ”.

Как иллюстрирует этот пример, исходный текст программы может быть настолько сокращен, что будет содержать только директивы препроцессора.

Препроцессор включает настоящие (реальные) тексты всех функций в программу и как единое целое (модуль) передает полученный текст на компиляцию.

 







Дата добавления: 2014-11-10; просмотров: 706. Нарушение авторских прав; Мы поможем в написании вашей работы!




Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...


Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...


Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

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

В теории государства и права выделяют два пути возникновения государства: восточный и западный Восточный путь возникновения государства представляет собой плавный переход, перерастание первобытного общества в государство...

Закон Гука при растяжении и сжатии   Напряжения и деформации при растяжении и сжатии связаны между собой зависимостью, которая называется законом Гука, по имени установившего этот закон английского физика Роберта Гука в 1678 году...

Билет №7 (1 вопрос) Язык как средство общения и форма существования национальной культуры. Русский литературный язык как нормированная и обработанная форма общенародного языка Важнейшая функция языка - коммуникативная функция, т.е. функция общения Язык представлен в двух своих разновидностях...

Патристика и схоластика как этап в средневековой философии Основной задачей теологии является толкование Священного писания, доказательство существования Бога и формулировка догматов Церкви...

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

Studopedia.info - Студопедия - 2014-2026 год . (0.008 сек.) русская версия | украинская версия