>>26912
>что это за пляски с дефайнами
Это препроцессорный макрос:
https://cplusplus.com/doc/tutorial/preprocessor/
>When the preprocessor encounters this directive, it replaces any occurrence of identifier in the rest of the code by replacement. This replacement can be an expression, a statement, a block or simply anything.
>The preprocessor does not understand C++ proper, it simply replaces any occurrence of identifier by replacement.
>The preprocessor examines the code before actual compilation of code begins and resolves all these directives before any code is actually generated by regular statements.
В твоем случае объявлен макрос, который будет менять в строчке с объявлением массива mas_name все пары аргументов заключенные в X со скобками, типа
>X(arg1, arg2)
на второй аргумент из пары, причем вот прямо с запятой в конце:
>arg2,
Например
#define X( a, b ) b,
static const char* mas_name[] = { X("Rei", "Hino") X("Rei", "Ayanami") };
#undef X
Превратится в
static const char* mas_name[] = { "Hino", "Ayanami", };
Скорее всего в каких-то таких целях макрос и использовался.
Просто предварительная обработка данных, которую проще было сделать еще до компиляции, и не тратить на нее время при исполнении.