Основы программирования для автоматизированного проектирования и решения творческих задач. Романенко А.В - 37 стр.

UptoLike

Составители: 

Если в составе директивы #undef указан идентификатор, то препроцессор прекратит осуществление замен именно этого
идентификатора. Если директиву #undef указать вообще без идентификатора, то будут прекращены замены в соответствии
со всеми ранее размещенными в тексте программы директивами #define.
3 Директивы условной компиляции. Препроцессорная обработка позволяет манипулировать текстом исходной про-
граммы таким образом, что при разных условиях будут компилироваться разные ее части. Делается это при помощи дирек-
тив
#if константное_выражение
#ifdef препроцессорный_идентификатор
#ifndef препроцессорный_идентификатор
#elif выражение
#else
#endif
Директивы #if, #ifdef и #ifndef связывают выполнение компиляции блока операторов, следующих за директивой, с за-
данным условием. Окончание блока для условной компиляции обозначает директива #endif. Директива #elif используется
вместе с директивой #if для формирования неограниченного количества альтернативных блоков. Директива #else использу-
ется вместе с директивами #if и #elif для создания единственного альтернативного варианта компиляции.
В директиве #ifdef проверяется, определен ли с помощью директивы #define к текущему моменту идентификатор, по-
мещенный после #ifdef. А в директиве #ifndef проверяется обратное директиве #ifdef условие. Здесь истинной будет счи-
таться ситуация, когда проверяемый идентификатор не был определен ранее.
П р и м е р 42
#define DEBUG 5
int a =
#if DEBUG == 5
DEBUG;
#elif DEBUG == 1
DEBUG * 2;
#else
1;
#endif
#ifdef DEBUG
printf("%d", a);
#endif
#undef DEBUG
#ifndef DEBUG
printf("Отладка программы закончилась");
#endif
В приведенном примере с помощью директив условной компиляции формируется инициализирующее выражения при опре-
делении переменной а и сообщение для вывода на печать.
4 Пустая директива:
#
5 Директива нумерации строк:
#line константа
Следующей за директивой строке в тексте программы будет присвоен указанный в директиве номер.
6 Выдача сообщений об ошибке:
#error сообщение
7 Задание настроек компилятора:
#pragma список_лексем
В директивах препроцессора разрешено использовать три препроцессорные операции: #, ## и defined.
Операции # и ## употребляются вместе с директивой #define для упрощения работы с лексемами в строке замещения.
Унарная операция # требует, чтобы идущая следом лексема была выделена в кавычки. Бинарная операция ## обеспечивает
конкатенацию лексем в стоке замещения.
Унарная операция
defined аргумент
применяется вместе с директивами условной компиляции #if и #elif для упрощения записи сложных условий выбора. Она
проверяет, был ли определен с помощью директивы #define указанный аргумент. В случае положительного результата про-