Macro y función con el mismo nombre.
Tengo el siguiente 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;
}
Quiero que el preprocesador amplíe la función myfunc solo al llamar. El código requerido después del preprocesamiento se ve así:
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;
}
El problema es que la definición de la función se expande también así.
void myfunc(do_a(int a), do_b(int b))
{
do_blah(a,b);
}
¿Hay alguna forma de hacer que la macro se expanda solo si estamos expandiendo una llamada de función? Intenté muchas soluciones y parece imposible, pero espero que alguien haya visto una situación como esta ...
NOTA: por favor, no me diga que cambie el nombre de la macro o los nombres de funciones: D
Update1: Gracias por su ayuda. Pero solo puedo cambiar la definición de la macro, no puedo cambiar su posición y no puedo cambiar la implementación de la función.