#include <stdio.h>
// 定义回调函数类型
typedef void (*ButtonCallback)(void);
// 按钮结构体
typedef struct {
char *label;
ButtonCallback callback;
} Button;
// 注册回调函数
void registerButtonCallback(Button *button, ButtonCallback callback) {
button->callback = callback;
}
// 模拟按钮点击
void clickButton(Button *button) {
if (button->callback) {
printf("Button '%s' clicked. Executing callback...\n", button->callback);
button->callback();
} else {
printf("Button '%s' has no registered callback.\n", button->label);
}
}
// 示例回调函数1
void onButtonClick1() {
printf("Button 1 clicked. Performing action 1.\n");
}
// 示例回调函数2
void onButtonClick2() {
printf("Button 2 clicked. Performing action 2.\n");
}
int main() {
Button button1 = {"Button 1", NULL};
Button button2 = {"Button 2", NULL};
registerButtonCallback(&button1, onButtonClick1);
registerButtonCallback(&button2, onButtonClick2);
clickButton(&button1);
clickButton(&button2);
return 0;
}
- 定义回调函数类型:使用
typedef
定义了一个函数指针类型ButtonCallback
,它指向一个无参数无返回值的函数。
- 定义按钮结构体:
Button
结构体包含按钮的标签label
和对应的回调函数指针callback
。
- 注册回调函数:
registerButtonCallback
函数用于将一个具体的回调函数注册到按钮的callback
成员中。
- 模拟按钮点击:
clickButton
函数检查按钮是否注册了回调函数,如果注册了则执行该回调函数。
- 示例回调函数:定义了
onButtonClick1
和onButtonClick2
两个示例回调函数,分别在按钮点击时执行不同的操作。
- 主函数:创建了两个按钮实例,并为它们注册了不同的回调函数,然后模拟按钮点击操作。