# 20.	Командная строка препроцессора, понятие директивы, назначение и принцип работы основных директив

## **Директивы препроцессора**

**Директивы препроцессора** - инструкции выполняемые до компиляции программы. Позволяют изменить текст программы, например, заменить некоторые слова, добавить информацию из файла. Все директивы препроцессора начинаются со знака #. После директив препроцессора точка с запятой не ставятся

<figure><img src="https://3644367790-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUZOUsWlbTNqsUYoinAff%2Fuploads%2FCeZhItjvbd6yiEeaVecL%2Fimage.png?alt=media&#x26;token=86811f05-1b0e-4a57-9269-81f73d0b6db6" alt=""><figcaption></figcaption></figure>

### Директива #include <a href="#direktiva-include" id="direktiva-include"></a>

Директива #include включает в текст программы содержимое указанного файла. Эта директива имеет две формы:`#include "имя файла"#include <имя файла>`Если имя файла указано в кавычках, то поиск файла осуществляется в соответствии с заданным маршрутом или в текущем каталоге. Если имя файла задано в угловых скобках, то поиск файла производится в стандартных директориях операционной системы

### Директива #define <a href="#direktiva-define" id="direktiva-define"></a>

Директива #define служит для замены часто использующихся констант, ключевых слов, операторов или выражений некоторыми **идентификаторами (макросами)**.Идентификаторы, заменяющие текстовые или числовые константы, называют *именованными константами или объектными макросами.*`#define идентификатор текст#define TWO 2`Идентификаторы, заменяющие фрагменты программ, называют *макроопределениями или функциональными макросами*, причем они могут иметь аргументы.`#define идентификатор(список параметров) текст#define SQUARE(X) X*X`Эта директива заменяет все последующие вхождения идентификатора на текст. Такой процесс называется **макроподстановкой или расширением**. Текст может представлять собой любой фрагмент программы на СИ, а также может и отсутствовать. В последнем случае все экземпляры идентификатора удаляются из программы.

### Директивы #ifdef (#else #endif) #ifndef  <a href="#direktivy-ifdef-else-endif-ifndef" id="direktivy-ifdef-else-endif-ifndef"></a>

### Условная компиляция

Директивы #if или #ifdef/#ifndef вместе с директивами #elif, #else и #endif управляют компиляцией частей исходного файла.\
Если указанное выражение после #if имеет ненулевое значение, в записи преобразования сохраняется группа строк, следующая сразу за директивой #if. Синтаксис условной директивы следующий:\\

```c
#if константное выражение
   группа операций
#elif константное выражение
   группа операций
#else
   группа операций
#endif
```
