Macro e função com o mesmo nome
eu tenho o seguinte código
#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;
}
Eu quero que o pré-processador expanda a função myfunc apenas na chamada. O código requerido após o pré-processamento é semelhante ao seguinte:
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;
}
O problema é que a definição de função é expandida também assim
void myfunc(do_a(int a), do_b(int b))
{
do_blah(a,b);
}
Existe alguma maneira de fazer macro expande apenas se estamos expandindo uma chamada de função? Eu tentei muitas soluções, e parece impossível, mas espero que alguém tenha visto uma situação como esta.
NOTA: por favor, não me diga para renomear os nomes das macro ou funções: D
Update1: Obrigado por sua ajuda. Mas só posso alterar a definição da macro, não posso alterar sua posição e não posso alterar a implementação da função.