I have the following 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;
}
I want the pre-processor to expand function myfunc only at calling. Required code after pre-processing looks like this:
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;
}
The problem is that function definition is expanded also like this
void myfunc(do_a(int a), do_b(int b))
{
do_blah(a,b);
}
Is there any way to make macro expands only if we are expanding a function call?
I tried many solutions, and it seems impossible but I hope that some one saw situation like this..
NOTE: please don't tell me to rename the macro or function names :D
Update1:
Thanks for you help. But I can only change the definition of the macro, I can't change its position and I can't change function implementation.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…