Макрос - это директива препроцессора, определяющая имя, которое должно быть заменено (или удалено) препроцессором непосредственно перед компиляцией.
Пример:
#define MY_MACRO1 somevalue
#define MY_MACRO2
#define SUM(a, b) (a + b)
тогда, если где-либо вВ коде (кроме строковых литералов) есть упоминание MY_MACRO1
или MY_MACRO2
, препроцессор заменяет его тем, что идет после имени в строке #define
.
Также могут быть макросы спараметры (например, сумма).В этом случае препроцессор распознает аргументы, например:
int x = 1, y = 2;
int z = SUM(x, y);
препроцессор заменяет следующим образом:
int x = 1, y = 2;
int z = (x + y);
только после этой замены компилятор получает возможность скомпилировать полученный код.