私はCで書かれた既存のコードベースを持っています。実行したいときに、実行時に関数の呼び出し順序を変更します。たとえば、func_Aがfunc_Bを呼び出したとします。私が望むのは、func_Bが呼び出されるたびに、func_Bの中でコードを実行するのではなく、func_Cを実行する必要があるということです。Cで関数呼び出しを素早くハックする方法
func_C (arg1,arg2)
{
return 1;
}
func_B (arg1,arg2)
{
return 0;
}
func_A()
{
/*The code is writen to always call func_B*/
return func_B(arg1,arg2)
}
main()
{
int result;
result = func_A();
//here result = 0 as expected.
/*Do some magic*/
result = func_A()
//result should be 1
}
これをC言語で達成するには、プログラムの実行/スタック操作を行う方法がありますか?私はアセンブリコードも書いても構いません。目標は、私はfunc_A、func_Bとfunc_C
あなたの例では 'func_C'はありませんが、なぜ単に関数ポインタを使わないのですか? 'func_B_ptr'(arg1、arg2)= func_B;'、 'func_B'を' func_B_ptr'に置き換え、 'func_B'を' func_B_ptr'に代入します。 – myaut
名前が少し修正されました。私はfunc_Bとfunc_Cをそれに応じて変更する必要があるため、関数ポインタを使用することはできません。目的はfunc_Aとfunc_Bを変更せずにこれを達成することです –
Cソースコードをお持ちの場合は、Cソースコードを変更してください。なぜあなたはCから楽にそれをやることができるのですか? – PSkocik