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

パラメータに別の名前を付けることをお勧めします。2番目に良いのはこれだと思います:

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 に答える