РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
34 of 815 menu

Директива #define

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

Различают макросы-константы и макросы-функции. Макрос-функция принимает параметры, которые подставляются в тело макроса при раскрытии. Важно помнить, что препроцессор выполняет чисто текстовую замену и не проверяет типы, поэтому макросы требуют аккуратного использования.

Синтаксис

#define NAME value #define NAME(params) body

Пример

Давайте определим макрос-константу и используем его в программе:

#include <iostream> using namespace std; #define PI 3.14 int main() { double res = PI * 2; cout << res << endl; return 0; }

Результат выполнения кода:

6.28

Пример

Давайте определим макрос-функцию, которая возвращает квадрат числа:

#include <iostream> using namespace std; #define SQUARE(x) ((x) * (x)) int main() { int res = SQUARE(5); cout << res << endl; return 0; }

Результат выполнения кода:

25

Пример

Давайте определим макрос без значения и применим его вместе с директивой #ifdef для условной компиляции:

#include <iostream> using namespace std; #define DEBUG int main() { #ifdef DEBUG cout << "debug mode" << endl; #else cout << "release mode" << endl; #endif return 0; }

Результат выполнения кода:

"debug mode"

Смотрите также

  • директива #undef,
    которая отменяет ранее определенный макрос
  • директива #ifdef,
    которая проверяет, определен ли макрос
  • директива #ifndef,
    которая проверяет, не определен ли макрос
  • директива #include,
    которая подключает содержимое другого файла
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить