使用例子
#include<stdio.h>
int Callback_1(int x) // Callback Function 1
{
printf("Hello, this is Callback_1: x = %d ", x);
return 0;
}
int Callback_2(int x) // Callback Function 2
{
printf("Hello, this is Callback_2: x = %d ", x);
return 0;
}
int Callback_3(int x) // Callback Function 3
{
printf("Hello, this is Callback_3: x = %d ", x);
return 0;
}
int Handle(int y, int (*Callback)(int))
{
printf("Entering Handle Function. ");
Callback(y);
printf("Leaving Handle Function. ");
}
int main()
{
int a = 2;
int b = 4;
int c = 6;
printf("Entering Main Function. ");
Handle(a, Callback_1);
Handle(b, Callback_2);
Handle(c, Callback_3);
printf("Leaving Main Function. ");
return 0;
}
结果
Entering Main Function.
Entering Handle Function.
Hello, this is Callback_1: x = 2
Leaving Handle Function.
Entering Handle Function.
Hello, this is Callback_2: x = 4
Leaving Handle Function.
Entering Handle Function.
Hello, this is Callback_3: x = 6
Leaving Handle Function.
Leaving Main Function.
2、应用2
#include <stdio.h>
typedef void(*Callback)(void *argv);
void Echo_Info(const char *msg, Callback fn)
{
if(NULL == msg)
{
printf("msg = [null]\n");
return ;
}
if(NULL == fn)
{
printf("callback function is not defined!\n");
return ;
}
fn((void *)msg);
}
void Echo_Data(void *msg)
{
if(NULL == msg)
{
printf("msg = [null]\n");
return ;
}
printf("msg = %s\n", (char*)msg);
}
int main(int argc, char const *argv[])
{
const char *msg = "hello world";
Echo_Info(msg, Echo_Data);
}
运行结果
msg=hello world