---
title: Макросы
seo:
  title: Макросы — C++ Developer
  description: Тема «Макросы» для собеседования C++ Developer. Как работают макросы?
---

[Все темы C++ Developer](/c-developer)

## <strong>Как работают макросы?</strong> [#q-14bee738d69b81d9ab19fb868066abc7]

Макросы в программировании, особенно в C и C++, работают как инструменты для текстовой замены в исходном коде перед его компиляцией. Макросы определяются с помощью директивы препроцессора <code>&#35;define</code>, и вот как они работают&#58;

1. <strong>Определение макроса</strong>&#58; Используя <code>&#35;define</code>,
   вы определяете макрос, который может быть как простым текстом, так и
   параметризированной функцией. Например&#58;

   ```cpp
   #define PI 3.14159
   #define MAX(a, b) ((a) > (b) ? (a) : (b))
   ```

1. <strong>Замена</strong>&#58; Во время препроцессинга, каждое вхождение имени
   макроса в коде заменяется его определением. Препроцессор просто заменяет
   текст без учета контекста или типов данных.

1. <strong>Компиляция</strong>&#58; После замены макросов исходный код
   компилируется. Замененный текст обрабатывается как обычный код программы.

Макросы полезны для&#58;

- Создания констант.

- Реализации небольших функций без накладных расходов вызова функций.

- Условной компиляции кода.

Макросы могут приводить к повторному вычислению аргументов. Например, MAX(a++, b) может увеличить a больше одного раза. Для вычислений предпочтительны функции и шаблоны, а для констант constexpr; они проверяют типы и соблюдают правила области видимости.

:::note[Ссылки для изучения]

1. [Макросы в C++](https://metanit.com/c/tutorial/3.3.php)
   :::
