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

5.同步回调函数

6.异步回调函数
