用C语言写一个“事件”的模拟程序

源:用C语言写一个“事件”的模拟程序

Example.c

//定义一个函数指针
func int (*func) (void);  

//调用该函数相当于触发了事件。
//该事件触发后,会检查函数指针func是否为NULL,如果不为NULL,说明该指针已被赋值(相当于该事件被注册)。
//如果事件已被注册,则执行之。
void fireTheEvent()
{
  if(func != NULL)
  {
      func();
  }
}  

void registerTheEvent(int (*function) (void))
{  //为fireTheEvent事件注册监听器。
  func = function;
}  

int callBack()
{
  printf("Hello~this is a callBack\n");
}  

int main()
{
  registerTheEvent(add);//注册事件监听,回调函数为 callBack。
  fireTheEvent(); //触发事件。由于已注册过监听,所以事件一旦触发就会调用 callBack 函数.
}
时间: 2024-11-14 13:07:54

用C语言写一个“事件”的模拟程序的相关文章

写一个事件(不仅仅是为控件添加事件)------------C#

最近看书上有关于事件的内容,之前在写winform时,事件都是直接用的,对内部的写法并不了解. 这里将自定义一个事件. 首先,写一个类. public class NewMailEventArgs:EventArgs//这个类以后是事件的参数,用于传递事件的一些附加信息.但是必须继承EventArgs { private readonly string m_from, m_to, m_subject; public NewMailEventArgs(string from,string to,s

用 Swift 语言写一个地图坐标弹跳动画

模仿“一号专车”写一个坐标图标弹跳动画,实现效果如下:(录制有点闪小心狗眼) 分析这个动画如下:1.easeIn或者linear被抬高约30像素2.被弹性放下 然后开始了狗血的 Swift animation 之旅. 注意:因为我刚刚开始学习 iOS 开发,动画亦是刚刚接触,下面的方式仅仅是为了完成需求,下面的文章并没有解释动画实现的细节,也不太可能是实现这个需求的最好方式,仅仅是“实现了”而已,只作为一个参考.我还会继续探索里面的细节,以后在博客里更新. 第一步,实现 先抛开那些蛋疼的物理效果

用html语言写一个功课表

今天在网上看了一个关于html的教程,主要是讲表格,看完之后觉得有必要上机试试,于是就写了下面的一段代码. <!DOCTYPE html><!--貌似5.0的可以这样写,课本的声明老长老长了--> <html> <head> <title>功课表</title> <meta http-equiv="Content-Type" content="text/html; charset=GB2312&qu

用C语言写一个函数返回参数二进制中1的个数

首先,给出正确的C语言代码如下: #include <stdio.h> int count_one_bits(unsigned int value) { int count =0; while(value) { if(value%2==1) { count++; } value=value/2; } return count; } int main() { unsigned int num=0; int ret=0; scanf("%d",&num); ret=co

用c语言写一个函数把十进制转换成十六进制(转)

#include "stdio.h" int main() { int num=0;int a[100]; int i=0; int m=0;int yushu; char hex[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};printf("请输入一个十进制整数:"); scanf("%d",&num); while(num>0) { y

怎样用C语言写一个有界面的简单的计算器

c5rryu悦诶凹瓷夷费<http://weibo.com/20180414p/230927983141232861519873> o5wpwo垂猿汕棵仗托<http://weibo.com/p444p878p/230927983197414674407424> 687dvn堵手韵忠彩仓<http://weibo.com/p856p257p/230927983243473530396672> a0fb2w期收饶么恿唾<http://weibo.com/201804

用C语言写一个链表储存学生信息

题目 已知学生基本信息由学号(长整型).姓名(字符数组).性别(字符型).年龄(整型)组成.编程实现:建立一个结点按学号顺序存储学生信息的单向链表,并实现依据学号对链表的添加.修改.删除和检索功能:添加新结点后,应继续保持结点按学号顺序的链接方式.分别定义函数实现链表的初始化.链表的打印输出.以及在链表中添加.修改.删除和检索节点的功能. 基本思路 建立单向链表,存储学生数据,用不同函数实现上述功能,在主函数中调用函数进行操作. 代码实现 定义结构体类型存储信息 struct STUDENT_N

用C语言写一个Helloworld_实现第一步编译运行

编写第一个hello world 创建helloworld.c // 程序头文件 #include <stdio.h> // 主入口函数 int main(int arc, char* argv[]) { printf("Hello World!\n"); return 0; } 编译自己的第一个程序 Mac os clang -g -o hellword helloword.c -g: 是输出调试信息 -o: 是输出可执行程序 hellword: 最终生成的文件名称 he

用C语言写一个程序,得出当前系统的整形数字长(16位,32位,64位)等,不能使用sizeof()

#include <iostream>#include <cmath>using namespace std; int main(){ int num = -1; unsigned int s = num;              //当前位级表示即为最大无符号数 cout << (int)log2(s)+1 << endl; //第一种 int intSize = 0; while(s != 0) { s = s >> 1; intSize