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

时间:2012-07-16 13:50:47

标签: c

如何调用名称与调用函数

中的局部变量名称相同的函数

情景:

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

}

3 个答案:

答案 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);
 }
}