C零碎语法
目录
文章目录
- C零碎语法
- 流程
- 1.声明一个函数指针
- 2.定义回调函数
- 3.注册回调函数
- 应用
- 4.事件回调
- 5.同步回调函数
- 6.异步回调函数
流程
1.声明一个函数指针
uint8_t (*p_CallbackFunc)(void);
2.定义回调函数
重要的是要注意回调函数只是一个函数。 由于它的使用方式(通过函数指针访问),我们将其称为回调。
uint8_t Handler_Event(void)
{
/* code of the function */
}
3.注册回调函数
这是为函数指针分配地址的操作。
static CallbackFunc_t HandlerCompleted;/*用来注册回调函数的功能函数*/
void CallbackRegister (CallbackFunc_t callback_func)
{HandlerCompleted = callback_func;
}/* 注册Handler_Event作为回调*/
CallbackRegister(Handler_Event);
应用
4.事件回调
#include <stdio.h>// 定义回调函数类型
typedef void (*EventCallback)(const char*);// 事件处理结构体
typedef struct {EventCallback callback; // 回调函数指针const char* eventName; // 事件名称
} EventHandler;// 注册回调函数
void registerCallback(EventHandler* handler, EventCallback callback, const char* eventName) {handler->callback = callback;handler->eventName = eventName;
}// 模拟事件触发
void triggerEvent(EventHandler* handler) {printf("Event '%s' has been triggered!\n", handler->eventName);handler->callback(handler->eventName);
}// 回调函数示例
void onEvent(const char* eventName) {printf("Callback function is called for event: %s\n", eventName);
}int main() {// 创建事件处理器实例EventHandler eventHandler;// 注册回调函数到事件处理器registerCallback(&eventHandler, onEvent, "SampleEvent");// 触发事件triggerEvent(&eventHandler);return 0;
}
- 我们定义了一个
EventCallback
类型,它是一个函数指针类型,指向一个接受const char*
参数并返回void
的函数。 EventHandler
结构体包含一个回调函数指针callback
和一个指向事件名称的指针eventName
。registerCallback
函数用于注册一个回调函数到EventHandler
结构体中。triggerEvent
函数模拟了一个事件的触发,它打印一条消息并调用注册的回调函数。onEvent
是一个回调函数示例,它简单地打印出事件名称。- 在
main
函数中,我们创建了一个EventHandler
实例,注册了onEvent
作为回调函数,并触发了事件。
当运行这个程序时,它将输出:
Event 'SampleEvent' has been triggered!
Callback function is called for event: SampleEvent