Препроцесор – це програма, яка здійснює обробку тексту на нульовій фазі компіляції. Компілятор мови С сам викликає препроцесор, хоча він може бути викликаний й автономно. Директиви препроцесору широко використовуються для підключення файлів, керування процесом компіляції програми, унеможливлення недопустимих перевизначень тощо. Цей механізм розроблений з метою зменшення залежності С-програми від архітектури комп'ютера та версії операційної системи. Використовуються такі директиви препроцесору:
#define, #include, #if, #elif, #else, #endif, #ifdef, #ifndef, #error, #line
Директива препроцесору #define
Директива #define використовується для заміни ключових слів, констант, операторів осмисленими ідентифікаторами. Існують два види директиви #define:
1. Макровизначення:
#define<ідентифікатор1><ідентифікатор2>
За наявності відповідної директиви відбувається тривіальна текстова заміна першого ідентифікатора другим у випадку, коли перший становить окрему лексему. Після визначення деякого ідентифікатора він знову може входити до інших директив #define:
|
|
#define WIDTH 180
#define LENGS (WIDTH+10)
Макровизначення й макропідстановки прийнято записувати у верхньому регістрі. Після інтерпретації однієї макропідстановки препроцесор переходить послідовно до наступної інтерпретації. Це приводить до того, що директива #define x x не зациклює препроцесор. Директива #define може бути розміщена у будь-якій частині програми. Область дії відповідної директиви – від точки визначення до кінця файла. У директиві #define допускається перенесення текстового рядка:
#define якщо студен\
ти РЕГІ не будуть уважно слухати викладача на парі,\