#include <stdio.h>
/* コールバック関数 */
typedef int (*TEST_CALLBACK)(int i); /* コールバック関数の形 */
int test_a(int mode,TEST_CALLBACK b) {
static TEST_CALLBACK a=NULL;
int rc;
if(mode==1) { /* コールバックする関数を設定 */
a=b;
return 0;
}
if(a==NULL) {
printf("コールバック関数が設定されていません");
return 0;
}
rc=a(1); /* test_b()を呼び出す */
printf("test_a() rc=%d\n",rc);
return 0;
}
int test_b(int i) {
printf("test_b() i=%d\n",i+100);
return i+200;
}
int main(void)
{
test_a(0,NULL); /* コールバック関数を設定しないで呼び出す */
test_a(1,test_b); /* コールバック関数を設定する */
test_a(0,NULL); /* ここから呼び出しても面白くないが、テストのため */
return 0;
}