如何调用名称与调用函数
中的局部变量名称相同的函数情景:
我需要从其他函数otherfun(int a,int myfun)调用函数myfun(a,b)。我该怎么办?
int myfun(int a , int b)
{
//
//
return 0;
}
int otherfun(int a, int myfun)
{
// Here i need to call the function myfun as .. myfun(a,myfun)
// how can i do this?? Please help me out
}
答案 0 :(得分:8)
int myfun(int a , int b)
{
return 0;
}
int myfun_helper(int a, int b)
{
return myfun(a,b);
}
int otherfun(int a, int myfun)
{
/* the optimizer will most likely inline this! */
return myfun_helper(a,myfun);
}
答案 1 :(得分:0)
您可以创建一个变量,保留指向myfun()
函数的指针。这将允许您有效地“混淆”原始函数,而无需引入额外的函数。
int myfun(int a, int b)
{
// ...
return 0;
}
static int (*myfunwrap)(int, int) = &myfun;
int otherfun(int a, int myfun)
{
myfunwrap(a, myfun);
}
当然,您可以用您喜欢的任何名称替换myfunwrap
。
答案 2 :(得分:0)
最好的想法是为参数选择一个不同的名称。第二个最好的是这个,我想:
int otherfun(int a, int myfun)
{
int myfun_tmp = myfun;
// Here i need to call the function myfun as .. myfun(a,myfun)
{
extern int myfun(int, int);
myfun(a, myfun_tmp);
}
}