c语言handler指针,typedef与指向函数的指针结合的妙用
今天看到keil的一个例子,里面涉及到利用typedef和指向函数的指针结合的例子,使得程序结构体系非常明了,觉得很好,特地记下来。
首先在头文件定义了这个指针,并用typedef将其声明为一个类型:
typedef void (*HandlerAddr)(void);
这里面定义了一个HandlerAddr的指针变量,该指针变量指向一个参数和返回值都为void类型的函数。这种类型的函数正好对应中断服务函数。中断服务函数不能有参数,也没有返回值。
然后用typedef将其声明为一个类型。然后在别的文件中可以利用这种类型进行重新定义。
然后在.c文件定义一些变量。
HandlerAddr IntVectTable[3][32]; /* 0 is MIC, 1 is SIC1, 2 is SIC2 */
这里定义了一个3*32的数组,该数组的第0行代表MIC中断控制器,第一行代表SIC1中断控制器,第二行代表SIC2中断控制器。每一个数据元素表征一个中断函数的入口地址。
在使用时,以IRQ_Exception为例:
void __irq IRQ_Exception( void )
{
HandlerAddr IRQHandler;
int i;
/* The first while loop is to take care of MIC1 interrupts. */
while ( (MIC_SR != 0) && (!(MIC_SR & 0x01)) && (!(MIC_SR & 0x02)) )
{
for ( i = 31; i >= 0; i-- )
{
if ( MIC_SR & (1
if ( IntVectTable[0][i] != NULL )
{
IRQHandler = IntVectTable[0][i];
if ( MIC_ATR & (1
MIC_RSR |= (1
(*IRQHandler)();
}
else
{
if ( MIC_ATR & (1
MIC_RSR |= (1
}
}
}
}
..........
return;
}
以一句IRQHandler = IntVectTable[0][i];获得某个中断函数的地址,然后直接通过 (*IRQHandler)();调用该函数。
说明:指向函数的指针一般用在两类地方,一种是如本例,实现函数回调。另一种为用在结构体中,在c语言中实现某些面向对象的例子。
转载:http://hi.baidu.com/zzublog/blog/item/7811e91db3397f03304e15b8.html
c语言handler指针,typedef与指向函数的指针结合的妙用相关推荐
- C语言 指向函数的指针
C语言程序在编译后,每个函数都有一个首地址(也就是函数第一条指令的地址),这个地址称为函数的指针.可以定义指向函数的指针变量,使用指针变量间接调用函数. 先用一个简单的程序来说明: #include ...
- C语言中指向函数的指针(我见过的讲的最清晰的文章)
转帖自: http://wenku.baidu.com/view/7e566448cf84b9d528ea7a57.html 1 定义和调用 程序在编译后,每个函数都有一个首地址(也就是函数第一条指令 ...
- (转)函数指针,指针函数,指向函数的指针,返回指针的函数
摘要: 在学习C语言时,一个比较容易混淆的概念就是函数指针.指针函数.返回值为指针的函数.本文将对这三个概念进行区分.指针函数就是返回值为指针的函数,两个本质上是同一事物,只是叫法不同.函数指针就是一 ...
- 指向函数的指针--转
http://book.51cto.com/art/200908/146363.htm 5.1.2 指向函数的指针 C语言通过&和*操作符来操作数据的地址,但它并没有提供一个用一般的方式来操作 ...
- 函数指针(指向函数的指针)
目录 1. 函数指针(指向函数的指针) 1.1 使用函数指针(指向函数的指针) 1.2 重载函数的指针 1.3 函数指针形参(形参是指向函数的指针) 1.4 使用类型别名和 decltype 简化函数 ...
- 【数据结构基础】指向函数的指针
文章目录 一.函数的指针 二.指向函数的指针变量 三.调用函数的两种方式 四.用指向函数的指针作函数参数(重点) 五.为什么要将指向函数的指针变量作为函数的形参(重点) 一.函数的指针 首先,函数名代 ...
- C语言学习笔记---指向函数的指针
在内存中函数的存放也是一段连续的内存,函数名就是指向改内存中的首地址,所以也可以将这个函数的首地址赋给一个指针变量,这样通过指针变量就可以访问改函数. 那么为什么要通过指针来访问函数呢?下面通 ...
- 【C语言】函数指针(指向函数的指针)
文章目录 1. 函数指针的定义 2. 函数指针的定义形式 2.1 一般定义方法 2.2 加上typedef关键字的定义 3.利用函数指针调用其所指向的函数 3.1 情况1:一般调用 3.2 情况2:函 ...
- C语言指针的那些事:第三篇(函数指针,指针函数,函数指针数组,指向函数指针数组的指针)
文章目录 1. 函数指针 1)函数指针的例题 2. 指针函数 3. 函数指针数组 1)函数指针数组的用途 4. 指向函数指针数组的指针 5. 一些后话 1. 函数指针 函数指针就是指向函数的指针:本质 ...
最新文章
- Spring 容器的启动过程
- Jenkins+PowerShell持续集成环境搭建(二)控制台项目
- 设置Tomcat字符集为utf-8
- 百度地图API公交检索示例 - 标绘结果路线、返回结果集
- IDEA 2021.1.2中scala生成变量自动勾选specify type
- How to sign app
- 小米2s自带rec刷root_刷Magisk模块开机卡Logo了怎么办?两种方法教你轻松解决
- win8选择哪个python版本_Win8的几个版本该怎么选
- lua协程 unity_unity协程coroutine浅析
- DES、AES、RSA等常用加密算法介绍与比较
- 网络资源(7) - JAX-WS视频
- 实验报告四201521460014
- 信号与系统第四章总结
- GIT 密钥生成工具puttygen使用技巧
- 基于ESP8266 HX711 克级单位称重式压力传感器(接入阿里云物联网平台)—— 看到有点意思,所以我也照着做了一个
- 硬件模拟大师_用机器人做咖啡,“智咖大师”这样升级新零售
- 【科研数据处理】[基础]类别变量频数分析图表、数值变量分布图表与正态性检验(包含对数正态)
- html如何设置提示收到消息,从零开始实现一个消息提示框
- Android常用存储类型与简介
- NBD Network Block Device