C语言注册回调函数

回调函数就是通过函数指针调用的函数。把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。

例如,工程中需要将通信的功能做成lib库,用于将来相同需求不同环境时使用,通信使用UART通信,但不同环境的UART通信实现方法和函数名肯定不一样,但lib库肯定又需要一个函数先用着,这时就需要回调函数,lib库中先使用临时函数名,再提供一个注册函数接口,等使用lib库时,先注册回调函数,使临时函数名指针指向实际环境的函数名,这样lib库中使用的临时函数就相当于实际环境的函数

使用过程:

//首先定义一个函数指针类型,USHORT是实际时需要的类型,void是实际需要的参数 
typedef USHORT (*Call_UARTtx)(void);

//定义回调函数原型,也就是上面的临时函数名
Call_UARTtx UARTtx_handler_t;

//注册函数,需要在回调函数使用前,在初始化中进行注册,入参就是实际函数名
void register_UARTtx( Call_UARTtx fun )
{
	UARTtx_handler_t = fun; //将临时函数指针指向实际函数即可
}

你可能感兴趣的:(三流程序员成长之路,c语言)