В C (как и в C ++) нет такого понятия, как макрофункция.Макросы обрабатываются препроцессором до компиляции кода.Приведенный выше пример кода будет обработан компилятором следующим образом:
main()
{
a = return "anystr_x_y.tar.bz2"
}
Чтобы достичь того, что вы пытаетесь сделать, вы должны указать препроцессору объединить x, y и постоянные части вашей строки.Это делается с помощью оператора ##, например:
#define ABC(x,y) ("anystr_" ## x ## "_" ## y ## ".tar.bz2")
. В результате компилятору будет передан следующий код:
main()
{
a = ("anystr_2_3.tar.bz2")
}