1

如何调用与调用函数中的局部变量名称相同的函数

设想:

我需要从其他函数 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

}
4

3 回答 3

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);
}
于 2012-07-16T13:54:23.927 回答
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用任何您喜欢的名称替换。

于 2012-07-16T14:26:36.240 回答
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);
 }
}
于 2012-07-16T14:27:54.593 回答