Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
(это программирование 2й семестр).docx
Скачиваний:
38
Добавлен:
15.05.2015
Размер:
45.99 Кб
Скачать
  1. Директива #define. Ее назначение. Символьные константы и макросы. Правила использования директивы.

Создает символьные константы, обозначаемые идентификаторами и макросами, операции, обозначаемые символьными строками. Формат директивы препроцессора define следующий: #define идентификатор замещающий текст. После появления этой строки все встретившиеся имена, которые совпадают с идентификатором, будут заменены до компиляции заменяющим текстом автоматически.

Пример.

#define PI 3.14159

Присвоить константе имя и использовать далее в программе

#define NUM 20

#define TXT (NUM+5)

#define A

K=TXT*2

A замещается на пустоту директивы препроцессора define с макросами. Макрос, определяемый директивой препроцессора define, - это символьное имя некоторых операций. Формат такой же. Также символьное значение может замещаться на замещаемый текст до компиляции. Макросы могут определяться с параметрами и без них. Макросы без параметров обрабатываются подобно символьным константам. Если же макрос имеет, параметр, то сначала в замещенный текст подставляется значение параметра, а затем уже этот расширенный макрос подставляется в текст вместо идентификатора.

Пример. Макрос с одним параметром

#define PI 3.14159

#define CIRCLE AREA(x) (PI*(x)*(x))

(PI*(4)*(4))

area=CIRCLE_AREA(4);

area=(3.14159*(4)*(4));

Вычисления, выполняемые макросом, можно выполнить при помощи функции

Double circle area(double x)

{ return 3.14159*x*x;}

  1. Директива #undef.

Отменяет определение символьных констант и макросов.

Структура директивы: #undef идентификатор. Область действия символьных констант или макросов начинается с места их определения и заканчивается явным их аннулированием директивой #undef или концом файла. После аннулирования соответственный идентификатор может быть использован в директиве define.

#define A 15

#define F(x, y) (x)-(y)

#define A

#undef A

#undef F(x, y)

  1. Условная компиляция файлов.

Дает возможность программисту управлять выполнением директив препроцессора и компиляции программного кода. Каждая условная директива препроцессора вычисляет значение целочисленного постоянного выражения. Операции преобразования типов size of и постоянные перечисляемого типа (enum) не могут участвовать в выражениях, вычисляемых директивой препроцессора. С помощью # можно исключить повторение const.

#ifdef e

#define e 2.7

#endif

Механизм действия заключается в том, что define возвращает 1, если определено и 0, если неопределенно. Если идентификатор не определен, то первая строка возвращает 1 и директива define производит нужный расчет, в противном случае директива опускается. Для переопределения константы можно использовать следующий набор директив.

#ifdef e

#undef e

#define e 2.7

#endif

Каждому If соответствует свое endif.

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

Набор директив может исключать

# if 0

// исключаемый фрагмент

#endif

для того, чтобы включить, достаточно 0 заменить на 1.

#ifdef Dibi текст

Если определена константа Dibi, то текст включается в процесс компиляции. Если неопределенна, то исключается.