|



|
3.2 Знакомство с
препроцессором.
Иногда возникает необходимость
использовать в программах константы. Чтобы
ввести ту или иную константу в программу, нужно
указать её фактическое значение. Однако
существуют веские причины использовать вместо
этого символические константы.
Использование символических констант улучшает
читаемость программы (имя говорит нам больше чем
число).

Если константа используется в
нескольких местах программы и, впоследствии
возникла необходимость изменить её значение
(например, задать PI с большей
точностью), то потребуется только изменить
определение символьной константы, а не
отыскивать каждый случай её появления в
программе.
Для задания символической
константы необходимо добавить в файл строку,
аналогичную следующей:
#define PI=3.14.
Каждый раз, когда появится имя PI, оно будет заменяться
препроцессором величиной 3.14. К моменту начала компиляции все
подстановки будут уже сделаны.
При определении символической
константы следует придерживаться следующих
правил:
- Сначала идёт ключевое слово #define
PI=3.14. Оно должно начинаться с
самой левой позиции.
- Потом следует символическое имя
константы, пробел, а затем её величина.
Проследим это наглядней по
рисунку:

Символ “точка с запятой” не
используется, поскольку это не оператор языка Си,
а директива препроцессора.
В процессе использования языка
Си выработалась традиция писать константы
прописными буквами. Если при просмотре программы
Вам встретится имя, написанное прописными
буквами, Вы сразу поймёте, что имеете дело с
константой, а не переменной. Это ещё один способ
улучшить читаемость программы.
Директиву #define можно использовать для определения
символьных и строковых констант:

Для задания символьных
констант используется знак ‘ (апостроф), строковые константы
заключаются в кавычки (“ “).
Если Вы разрабатываете целый
пакет программ, использующих один и тот же набор
констант, Вы можете произвести следующие
действия:
- Соберите все Ваши директивы #define
в один файл и назовите его,
например, const.h

- В начало каждого файла,
содержащего программу, включите директиву #include
<const.h> (или #include “const.h”)

Тогда, перед каждой компиляцией,
препроцессор прочтёт файл с именем const.h и использует все директивы #define для Вашей программы.
Символ .h
в конце имени файла, должен напоминать Вам о том,
что этот файл является заголовком (от
английского header), т.е. в нём
содержится вся информация, которая должна
попасть в начало Вашей программы. Самому
препроцессору безразлично, используете Вы
символ .h в имени файла или
нет.
Возможности директивы #define не исчерпываются только
представлением констант. С помощью этой
директивы можно определить и другие элементы
языка. Смотри пример:

Препроцессор просматривает
Вашу программу и проводит поиск элементов,
определяемых директивами #define. Обнаружив такие элементы, он
полностью заменяет их. Результирующая программа
будет полностью идентична той, которую мы могли
бы получить, если бы с самого начала писали её в
обычных терминах языка Си (смотри следующий
фрагмент).

|