多くのスクリプト言語には、次のようなプログラミング方法があります。
まず、funcという名前の関数があります。
void func()
{
}
次に、クライアントがこの関数を呼び出すときにいくつかの情報をログに記録したいのですが、関数を変更したくないので、次のようなことができます。
void (*pfunc)(void) = func;
void func()
{
log("Someone call fund");
pfunc();
}
その後、fundを呼び出す人は誰でも、私の「オーバーライド」関数を呼び出すことになります。これは、多くのスクリプト言語で問題ありません。C言語でも同じことができますか?そしてそれをどのようにコーディングするのですか?
このメソッドを使用して、サードパーティライブラリでいくつかの作業を実行したいので、コンパイルプロセスだけでなく、リンクプロセスに影響を与える何かを実行する必要があります。