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

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

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






Для включения текста из файла используется команда #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; просмотров: 677. Нарушение авторских прав; Мы поможем в написании вашей работы!



Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

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

Индекс гингивита (PMA) (Schour, Massler, 1948) Для оценки тяжести гингивита (а в последующем и ре­гистрации динамики процесса) используют папиллярно-маргинально-альвеолярный индекс (РМА)...

Методика исследования периферических лимфатических узлов. Исследование периферических лимфатических узлов производится с помощью осмотра и пальпации...

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

Плейотропное действие генов. Примеры. Плейотропное действие генов - это зависимость нескольких признаков от одного гена, то есть множественное действие одного гена...

Методика обучения письму и письменной речи на иностранном языке в средней школе. Различают письмо и письменную речь. Письмо – объект овладения графической и орфографической системами иностранного языка для фиксации языкового и речевого материала...

Классификация холодных блюд и закусок. Урок №2 Тема: Холодные блюда и закуски. Значение холодных блюд и закусок. Классификация холодных блюд и закусок. Кулинарная обработка продуктов...

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