Макрос и функция с тем же именем

У меня есть следующий код

#define myfunc(a,b) myfunc(do_a(a), do_b(b))

void myfunc(int a, int b)
{
  do_blah(a,b);
}
int main()
{
    int x = 6, y = 7;
    myfunc(x,y);

    return 0;
}

Я хочу, чтобы препроцессор расширял функцию myfunc только при вызове. Обязательный код после предварительной обработки выглядит так:

void myfunc(int a, int b)
{
  do_blah(a,b);
}
int main()
{
    int x = 6, y = 7;
    myfunc(do_a(x),do_b(y));

    return 0;
}

Проблема в том, что определение функции также расширяется

void myfunc(do_a(int a), do_b(int b))
{
  do_blah(a,b);
}

Есть ли способ сделать расширение макроса, только если мы расширяем вызов функции? Я перепробовал много решений, и это кажется невозможным, но я надеюсь, что кто-то видел такую ситуацию ..

ПРИМЕЧАНИЕ: пожалуйста, не говорите мне переименовать имена макросов или функций: D

Update1: Спасибо за помощь. Но я могу только изменить определение макроса, я не могу изменить его положение и не могу изменить реализацию функции.