Компиляция выполняет еще один шаг перед собственно компиляцией исходного файла, называемый предварительно обработкой. Препроцессор просматривает программу и заменяет символьные аббревиатуры в программе на соответствующие директивы. Он расширяет возможности языка 3 функциями.
1. Подстановкой имен;
2. Включением файлов;
3. Условной компиляцией.
Это позволяет создавать мобильные, более удобочитаемые и более удобные для сопровождения программы.
# - первый символ в левой позиции, в любом месте исходного файла сообщает препроцессору, что далее следует директива. Она имеет действие до конца файла.
Подстановка имен
Директивы:
#define – создать макроопределение
#undef - удалить макроопределение
Директива #define служит для:
А) определения символических констант
#define TWO 2
#define MSG “Приднестровский Университет”
#define PX printf(“X равен %d\n”,x)
#define FMT “X равен %d”
void main (void) {
int x=TWO;
PX;
Printf(FMT,x);
Printf(“%s\n”,MSG);
Printf(“TWO:MSG\n”);
}
Макроопределение не должно содержать пробелы. Процесс прохождения от макроопределения до заключительной строки называется макрорасширением. Препроцессор делает подстановки.
|
|
Б) Макроопределение с аргументом
Очень похоже на функцию (макро-функция).
#define SQUARE(x) x*x
#define PR(x) printf(“X равен %d\n”,x)
void main(void) {
int x=4; int z;
z=SQUARE(x); //16
PR(z);
Z=SQUARE(2); //4
PR(z);
PR(SQUARE(X));
PR(100/SQUARE(2));//100
PR(SQUARE(X+2)); //14
PR(SQUARE(++X)); //30
}
Макрофункция ведет к увеличению программы. Функция к увеличению времени работы программы. Макроопределение создает строчный код, не нужно заботится о типах переменных.
Включение файлов
Директива #include позволяет включить в текст содержимое файла, имя которого является параметром директивы.
1. #include <stdio.h> - ищет в системном каталоге
2. #include “stdio.h” – ищет в текущем рабочем каталоге.
3. Можно создавать свои файлы с функциями и подключать.
#include “my_file.cpp”
4. Можно подключать макроопределение. Макрорасширение макроса должно приводить к одной из первых двух форм директивы.
#define MY_FILE “d:\\bc\work\\my_file.h”
#include MY_FILE