这是实验楼上一个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;
}

  

  

最新文章

  1. windows下使用VS2015编译V8 JavaScript引擎(v5.5 - 2016/09)
  2. iOS UIScrollView的使用
  3. POJ 2225 / ZOJ 1438 / UVA 1438 Asteroids --三维凸包,求多面体重心
  4. WPF MultiRangeSlider 简单实现
  5. web前端~~浏览器兼容问题(百度)
  6. EditPlus+VisualStudio配置VC简易开发环境环境
  7. Vue.js相关知识3-路由
  8. Swift: 继承
  9. mysql 使用set names 解决乱码问题的原理
  10. Rikka with Chess(规律)
  11. Redis使用说明详解
  12. 去除Eclipse中js报错的问题
  13. div变成输入框
  14. 第一次实验报告x
  15. python之django母板页面
  16. GDPR 和个人信息保护的小知识
  17. (其他)最常用的15大Eclipse开发快捷键技巧
  18. B. Divisor Subtraction
  19. Linux系统编程【转】
  20. ASP.NET 散碎知识

热门文章

  1. Windows Server 2016安装.NET Framework 3.5
  2. android实现扫一扫等功能
  3. 微信小程序解析HTML标签带有&lt;p&gt;
  4. ThreadLocal是什么?
  5. Linux重装为Windows后读取原EXT类型数据盘
  6. linux的端口学习(一)
  7. linux--网络管理-ifconfig,route,netstat,ip,ss,dns,主机名网卡名修改bond
  8. ASA-有关AAA用户登录的问题
  9. CSS创意与视觉表现
  10. leetcode网解题心得——61. 旋转链表