
- •Глава 3. Производные типы данных. Массивы.
- •3.3. Многомерные массивы.
- •3.4. Базовые алгоритмы обработки двумерных массивов.
- •Глава 4. Функции.
- •4.1. Стандартное определение функции.
- •4.2. Локальные переменные.
- •4.3. Размещение тела функции. Прототип функции.
- •4.4. Глобальные переменные.
- •4.5. Классы памяти.
- •5.1. Директива # define.
- •5.2. Использование макроопределений с аргументами.
- •5.3. Директива # include. Включение файла.
- •5.4. Условная компиляция.
5.3. Директива # include. Включение файла.
Директива препроцессора # include позволяет включать отдельно созданные файлы в текущий файл. Директива выдается в двух видах:
# include <имя файла> (1)
# include “имя файла”. (2)
При наличии директивы # include строка первого или второго вида заменяется содержимым файла с именем «имя_файла».
Угловые скобки сообщают препроцессору, что файл необходимо искать в одном или нескольких стандартных системных каталогах. В том случае, когда имя файла заключается в кавычки, поиск осуществляется либо в текущем каталоге, либо в каком-то другом указанном каталоге.
Пример:
# include <math.h> поиск осуществляется в системном каталоге
# include “max.h” поиск осуществляется в текущем каталоге
# include “D:\Dir1\ max.h” поиск осуществляется в каталоге Dir1 на диске D.
Если файл с указанным именем не обнаружен в текущем или указанном каталогах, препроцессор продолжит поиск в стандартных каталогах, в случае неудачи (файл не найден) выдается соответствующее сообщение.
Используя директиву # include <имя файла> или # include “имя файла” можно подключить либо стандартные, либо нестандартные заголовочные файлы. Перечень обозначений заголовочных файлов для работ с библиотеками компилятора утвержден стандартом языка. Заголовочные нестандартные файлы являются эффективным средством при модульной разработке программ. В этом случае связь между модулями, размещаемыми в разных файлах, реализуется как с помощью параметров, так и через внешние объекты, являющиеся глобальными для всех или нескольких модулей. Описания внешних объектов и прототипы функций помещаются в одном головном файле. Этот головной файл с помощью директивы # include включается во все модули, где внешние объекты необходимы.
С помощью директивы # include можно подключать файлы пользователя.
Пример: # include “GGG.CPP”.
Теперь на очень простом примере рассмотрим использование директивы # include для подключения заголовочных файлов и файлов с программами пользователя.
Задача.
Даны три целых числа a, b, c. Получить квадрат максимального из них. Определим функцию max_, позволяющую выбрать наибольшее значение из двух переменных. В заголовочный файл поместим следующие инструкции:
/* заголовочный файл “head1.h”*/
int max_(int, int); //прототип функции
# define SQR(x) ((x)*(x)) //макрофункция возведения в квадрат
extern int max; //внешняя переменная с именем max, эта директива может быть опущена.
Текст функции с именем max_, находящей наибольшее значение для двух переменных:
/* файл max_.CPP*/
int max_(int a, int b);
{ if (a>b)
max=a;
else
max=b;
return max;
}
Примечание: переменная с именем max может быть опущена, она введена только для того, чтобы показать связь двух функций через внешнюю переменную.
/* файл Mod1.CPP содержащий текст основной функции*/
int max; /*глобальная переменная*/
# include “head1” /* подключается заголовочный файл пользователя*/
# include “ max_.CPP” /* подключается файл с текстом функции*/
void main ( )
{ int a=9, b=-7, c=5;
int d;
max_(a, b);
d=max_(max, c); /*d=9*/
d=SQR(d); /*d=81*/
}