Макрос просто помещает код, определенный в макросе, куда бы вы ни вызывали макрос через препроцессор
Что в основном сводится к тому, что этот код:
#include <iostream>
#define TEST(a1) \
int a1 = 5;
int main(){
TEST(a1);
std::cout << a1 << std::endl;
return 0;
}
становится этим кодом:
#include <iostream>
int main(){
int a1 = 5;
std::cout << a1 << std::endl;
return 0;
}
в действии.
Преимущество макроса в том, что вы можете использовать его несколько раз. И, поскольку наш пример параметризован, мы можем использовать его с небольшими изменениями. Так, например, этот код:
#include <iostream>
#define TEST(a1) \
int a1 = 5;
int main(){
TEST(a1);
std::cout << a1 << std::endl;
TEST(a2);
std::cout << a2 << std::endl;
TEST(a3);
std::cout << a3 << std::endl;
return 0;
}
становится:
#include <iostream>
int main(){
int a1 = 5;
std::cout << a1 << std::endl;
int a2 = 5;
std::cout << a2 << std::endl;
int a3 = 5;
std::cout << a3 << std::endl;
return 0;
}
Есть много вещей, которые вы можете делать с макросами, и я рекомендую вам изучить их, но это поможет вам начать.
РЕДАКТИРОВАТЬ: Также стоит отметить, что, если вы хотите, вы можете изменить этот макрос на:
#define TEST(a1,val) \
int a1 = val;
Таким образом, вы можете контролировать значение инициализации независимо, если хотите. Итак:
TEST(a4,8)
становится:
int a4 = 8;