> For the complete documentation index, see [llms.txt](https://op-al.gitbook.io/s-30-voprosy-i-dop.-voprosy/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://op-al.gitbook.io/s-30-voprosy-i-dop.-voprosy/20.-komandnaya-stroka-preprocessora-ponyatie-direktivy-naznachenie-i-princip-raboty-osnovnykh-direkt.md).

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

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

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

<figure><img src="/files/vR9WdLUxaQspVPXD3Blf" 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. Синтаксис условной директивы следующий:<br>

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


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://op-al.gitbook.io/s-30-voprosy-i-dop.-voprosy/20.-komandnaya-stroka-preprocessora-ponyatie-direktivy-naznachenie-i-princip-raboty-osnovnykh-direkt.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
