Главная » Статьи » Програмування » C [ Добавить статью ]

RUS Уроки по программированию на языке С (Препроцессор.)

Препроцессор.

Препроцессор - это программа, которая производит некоторые (иногда весьма значительные) манипуляции с первоначальным текстом программы перед тем, как он подвергается компиляции. Будучи дословно переведенным, с английского, слово препроцессор означает предварительный обрабатыватель

Препроцессоры создают входной текст для компиляторов и могут выполнять следующие функции:

  • обработку макроопределений;
  • включение файлов;
  • "рациональную" предобработку;
  • расширение языка.

Например, весьма часто в программах приходится использовать "ничего не говорящие" числа. Это могут быть какие-то математические константы или размеры используемых в программе массивов и т.д. Общепризнано, что обилие таких констант затрудняет понимание программ и считается признаком плохого стиля программирования. В среде программистов такие константы получили язвительное название магических чисел. Чтобы программа не изобиловала ими, языки программирования позволяют дать константе имя и далее использовать его везде вместо самой константы.

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

#define P1 3.14159
#define E 2.71284

препроцессор заменит в программе все имена P1 и E на соответствующие числовые константы. Теперь, когда вы обнаружите, что неправильно написали приближенное значение основания натуральных логарифмов, вам достаточно исправить единственную строку с определением константы, а не просматривать всю программу:

#define E 2.71828

Препроцессор языка C позволяет переопределять не только константы, но и целиком программные конструкции. Например, можно написать определение:

#define forever for(;;)

и затем всюду писать бесконечные циклы в виде:

forever { <тело цикла> }

А если вам не нравятся фигурные скобки, то определите

#define begin {
#define end }

и далее используйте в качестве операторных скобок begin и end, как это делается, например, в языке Pascal. Подобные определения, называемые макроопределениями (макросами), могут иметь параметры (и вследствие этого быть еще более мощными), однако об этом чуть позже.

Еще одна важная "услуга" препроцессора - включение в исходный текст содержимого других файлов. Эта возможность в основном используется для того, чтобы снабжать программы какими-то общими для всех файлов определениями. Например, чрезвычайно часто в начале программы на языке C встречается препроцессорная конструкция:

#include <iostream>

Когда исходный текст программы обрабатывается препроцессором, на место этой инструкции ставится содержимое файла iostream, содержащего макроопределения и объявления данных, необходимых для работы потоков ввода-вывода.

Оператор (директива) препроцессора - это одна строка исходного текста, начинающаяся с символа #, за которым следуют название оператора (define, pragma, include, if) и операнды. Операторы препроцессора могут появляться в любом месте программы, и их действие распространяется на весь исходный файл. 

Категория: C | Добавил: DEN-SHP (06.11.2012)
Просмотров: 720 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]