Поименованные константы определяются с помощью директивы препроцессора define:
#define идентификатор строка-шаблон
Поименованные константы используются для того, чтобы облегчить чтение и изменение программ.
До и после идентификатора в директиве define должен быть один или более пробелов. Строка-шаблон начинается с первого отличного от пробела символа и заканчивается символом перевода строки. Строку-шаблон можно продолжить более чем на одну строку, начиная новые строки символом \.
После определения поименованной константы препроцессор заменяет в исходном тексте программы идентификатор значением строки-шаблона. Внутри комментариев и строковых констант такая замена не производится.
В отличии от операторов языка Си, директивы препроцессора Си не заканчиваются символом ;.
Пример 1
#define TRUE     1
#define FALSE    0
#define MAXITEMS 500
int main()
{
   int i, found, val[MAXITEMS];
   found=FALSE ;
   while (found==FALSE)
     {
     ...
     if (выражение)
        found=TRUE;
     }
   ...
   for (i=0; i<MAXITEMS; i++)
   /*  прочитать значение val [i] */
   ...
}
Использование в прим. 1 поименованных констант TRUE и FALSE делает текст программы более понятным. Константа MAXITEMS упрощает сопровождение программы. К примеру, если потребуется изменить количество предметов, придется исправить только одну директиву препроцессора и перекомпилировать программу.
При обработке препроцессором поименованные константы TRUE, FALSE и MAXITEMS заменяются, соответственно, на значения 0, 1 и 500. При этом директивы препроцессора удаляются из исходного текста программы и не попадают на следующий этап компиляции.
Примечание 1
Использование заглавных букв в идентификаторах поименованных констант является программистским соглашением.