C/C++ - CallBack
2024-09-04 20:29:03
这是实验楼上一个callback debug例子,我没有提交结果,但在本地上运行没有任何问题,也无警告:
#include <stdio.h> #define MAX 3 typedef int (*alarm) (int type); alarm alarm_list[MAX];
int index = 0; void register_alarm(alarm a);
int hit_alarm(int index); void register_alarm(alarm a)
{
alarm_list[index++] = a;
} int hit_alarm(int index)
{
if (index < 0 || index >= MAX)
return 1;
(*alarm_list[index]) (index);
return 0;
} int alarm1(int type)
{
printf("one:%d\n", type);
return 0;
} int alarm2(int type)
{
printf("two:%d\n", type);
return 0;
} int alarm3(int type)
{
printf("three:%d\n", type);
return 0;
} int main
{
register_alarm(alarm1);
register_alarm(alarm2);
register_alarm(alarm3); hit_alarm(0);
hit_alarm(1);
hit_alarm(2); return 0;
}
再写一个实现回调的例子:
#include<stdio.h> typedef int (*__callback__) (void* type_param); void func_register(__callback__ func, void* param);
void func_register(__callback__ func, void* param)
{
(*func) (param);
} // 自定义函数
int my_func(void* param)
{
printf("Param is %d\n", (int*)param);
return 0;
} int main
{
// 自定义函数通过作为函数参数进行回调
func_register(my_func, (void*)5);
return 0;
}
最新文章
- windows下使用VS2015编译V8 JavaScript引擎(v5.5 - 2016/09)
- iOS UIScrollView的使用
- POJ 2225 / ZOJ 1438 / UVA 1438 Asteroids --三维凸包,求多面体重心
- WPF MultiRangeSlider 简单实现
- web前端~~浏览器兼容问题(百度)
- EditPlus+VisualStudio配置VC简易开发环境环境
- Vue.js相关知识3-路由
- Swift: 继承
- mysql 使用set names 解决乱码问题的原理
- Rikka with Chess(规律)
- Redis使用说明详解
- 去除Eclipse中js报错的问题
- div变成输入框
- 第一次实验报告x
- python之django母板页面
- GDPR 和个人信息保护的小知识
- (其他)最常用的15大Eclipse开发快捷键技巧
- B. Divisor Subtraction
- Linux系统编程【转】
- ASP.NET 散碎知识
热门文章
- Windows Server 2016安装.NET Framework 3.5
- android实现扫一扫等功能
- 微信小程序解析HTML标签带有<;p>;
- ThreadLocal是什么?
- Linux重装为Windows后读取原EXT类型数据盘
- linux的端口学习(一)
- linux--网络管理-ifconfig,route,netstat,ip,ss,dns,主机名网卡名修改bond
- ASA-有关AAA用户登录的问题
- CSS创意与视觉表现
- leetcode网解题心得——61. 旋转链表