Makro und Funktion mit gleichem Namen

Ich habe den folgenden Code

#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;
}

Ich möchte, dass der Pre-Prozessor die Funktion myfunc nur beim Aufruf erweitert. Erforderlicher Code nach der Vorverarbeitung sieht folgendermaßen aus:

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;
}

Das Problem ist, dass die Funktionsdefinition auch so erweitert wird

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

Gibt es eine Möglichkeit, ein Makro nur dann zu erweitern, wenn ein Funktionsaufruf erweitert wird? Ich habe viele Lösungen ausprobiert, und es scheint unmöglich, aber ich hoffe, dass jemand eine Situation wie diese sah.

HINWEIS: Bitte fordern Sie mich nicht auf, die Makro- oder Funktionsnamen umzubenennen: D

Update1: Danke für deine Hilfe. Aber ich kann nur die Definition des Makros ändern, ich kann seine Position nicht ändern und ich kann die Funktionsimplementierung nicht ändern.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage