コールバック関数の形式にしておけば、渡す関数を変えるだけで異なる処理ができるようになります。
pthreadの作成時や、signal関数を使うときも、このコールバック関数の方式がとられています。
// //コールバック関数のテスト // #include <stdio.h> void *callBackFunction(void *data) { printf("コールバック関数が呼ばれました。\n何かの処理を行います。\n"); } //コールバック関数を引数とする関数。 void somefunc(void* (*callbackFunc)(void*)) { printf("some process...\n"); printf("some process2...\n"); //コールバック関数を呼ぶ。 callbackFunc(NULL); printf("finish somefunc\n"); } int main(void) { somefunc(callBackFunction); return -1; }
実行例:
iMac:~ lhaplus8888$ ./a.out
some process...
some process2...
コールバック関数が呼ばれました。
何かの処理を行います。
finish somefunc
iMac:~ lhaplus8888 $
このコメントはブログの管理者によって削除されました。
返信削除