Урок 11. Препроцессорные директивы #define и #undef

Всем привет! Сегодня у нас небольшая тема про препроцессорные директивы #define и #undef.

#define — переводится как определять и позволяет заменить выражения, ключевые слова идентификаторами. Для примера возьмем программу из третьего урока:

#include 
#define far (a-32)*5/9
 
int main()
{
   float a;
   a=79; /*Температура в Фаренгейтх*/
   printf("Температура в Цельсиях:%.2f\n", far); /*Выводим на экран содержимое переменной b*/
   return 0;
}

Рассмотрим программу начиная с первой строки:

1. Подключаем библиотеку stdio.h. Переход к следующей строке.
2. Присваиваем идентификатору far уравнение
3. В восьмой строке мы просто указали идентификатор far.

Результат:

Температура в Цельсиях:26.11

То есть при компиляции, где мы вставили far, идентификатор будет заменен на формулу. И так мы можем использовать его много раз, то есть до отмены. #define удобен в тех случаях, когда одну и ту же информацию нужно вводить по нескольку раз.

#undef — освобождает препроцессорный идентификатор #define.
Пример:

#include 
#define far (a-32)*5/9
 
int main()
{
float a;
a=79; /*Температура в Фаренгейтх*/
printf("Температура в Цельсиях:%.2f\n", far); /*Выводим на экран содержимое переменной b*/
#undef far /*Освобождаем идентификатор*/
int far=5;
printf ("%d\n", far);
return 0;
}

Программа аналогична первой за исключением 9-11 строк.

Результат выполнения:

Температура в Цельсиях:26.11
5

В девятой строке мы освободили идентификатор far. А в десятой присвоили ему значение 5.