forked from theArcticOcean/CLib
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CCallBack.c
42 lines (36 loc) · 1.29 KB
/
CCallBack.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/**********************************************************************************************
*
* Filename: CCallBack.c
*
* Author: theArcticOcean - [email protected]
*
**********************************************************************************************/
/*
C语言中的回调函数使用函数指针实现。
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
过程:
⑴ 定义一个回调函数;
⑵ 提供函数实现的一方在初始化的时候,将回调函数的函数指针注册给调用者;
⑶ 当特定的事件或条件发生的时候,调用者使用函数指针调用回调函数对事件进行处理。
*/
#include <stdio.h>
void PrintMessage( int a )
{
printf( "this is event number: %d\n", a );
}
void test( void (*FuncPtr)( int a ) )
{
int i;
for( i = 1; i <= 10; ++i )
{
if( !(i & 1) )
{
FuncPtr( i );
}
}
}
int main()
{
test( PrintMessage );
return 0;
}