为什么typedef定义函数指针针的时候需要加上

本帖子已过去太久远了,不再提供回复功能。& 函数指针定义在结构体中,如何调用函数
管理员:??人数:394小组积分:2457简介:加入本小组可以讨论入门级的、提高级、精通级的DSP问题,不管你是刚刚接触DSP的朋友,还是DSP骨灰级玩家,本小组都热情真诚的欢迎你。我是在企业DSP开发一线工作的电气工程师,主要从事电机控制领域,接触DSP比较早,朋友有问题的,能帮的肯定全力帮。由于白天在单位上班,所以回答提问的时间定在每天晚上九点,不见不散。各位朋友请注意,这里发帖后,是按照时间倒序来放置帖子的,所以请大家从后往前看,这样逻辑才是正确的。本人看到有朋友提问,就肯定会回复,本人“芯源乐淘”,希望我的解答能对大家有所帮助。小组公告小组暂无公告.??|????|??
需要确认注册邮箱后才能下载,
楼主??[求助]?
函数指针定义在结构体中,如何调用函数
3年会员勋章目前未领取。领取条件:?凡是注册时间三年以上的活跃用户即可领取该勋章。
总积分:124分
发表于 12:05
在头文件中,函数指针定义在一个AD模块结构体中
//-----------------------------------------------------------------------------
typedef struct {?????
??????????????????????????? float VC1;??????????????????? ?//VC1
??????????????? float Volt_channelA0;?? ?//Output:DSP A通道8个管脚上的电压值
??????????????? void (*read)();?????? // Pointer to the read function
?????????????? }ADC_VOLT_CURRENT_GET;?? //ADC模块结构体
//-----------------------------------------------------------------------------
// Define a POSSPEED_handle
//-----------------------------------------------------------------------------
typedef ADC_VOLT_CURRENT_GET? *ADC_VOLT_CURRENT_GET_
//-----------------------------------------------------------------------------
// Default initializer for the POSSPEED Object.
//-----------------------------------------------------------------------------
#define ADC_VOLT_CURRENT_GET_DEFAULTS {0,0,\
?????????????????????????????????????????????????????????????? ?(void (*)(long))ADC_volt_current_get_Calc}
//-----------------------------------------------------------------------------
//? 函数声明????????????????????????????
//-----------------------------------------------------------------------------
Void? ADC_volt_current_get_Calc (ADC_VOLT_CURRENT_GET_handle);
?在源文件中,调用ADC采样计算函数的方式如下
//采样电压电流
?Volt_current.read(&Volt_current);?? //主要是这里看不懂
我对这种调用方式看不太懂,不太明白。有两个问题想请教一下大家:
望不吝赐教!非常感谢!
第一: 调用函数时,函数名为什么是Volt_current.read ?
写成 ADC_volt_current_get_Calc 不可以吗?
? ?也就是用这种写法来调用函数 ADC_volt_current_get_Calc(&Volt_current) ,这样可以吗?作者那样做的目的是什么呢?
第二:函数声明的时候,形参是个结构体指针ADC_VOLT_CURRENT_GET_handle
//-----------------------------------------------------------------------------
//? 函数声明????????????????????????????
//-----------------------------------------------------------------------------
Void? ADC_volt_current_get_Calc (ADC_VOLT_CURRENT_GET_handle);
但是调用的时候函数实参是个地址(&Volt_current)
//采样电压电流
?Volt_current.read(&Volt_current);?
为什么这样做是等价的呢?
期待各路大神为初学者解答一下,谢谢
1楼??[求助]?
Re:函数指针定义在结构体中,如何调用函数
总积分:125分
发表于 13:15
我刚看的时候也遇到了和楼主一样的问题。
首先,它在名为ADC_VOLT_CURRENT_GET的结构体中定义了三个变量,其中一个是指针变量,这个指针变 你 你明年
量也就是函数指针,用来调用函数用的,假设有这么个函数 int fun(int a ,int b){……}然后定义了一个函数指针int (*funp)(),把函数地址赋给函数指针,即funp=fun,这样就能利用函数指针调用函数了,调用形式为:(*funp)(3,4)。至于你的第一个问题,为什么要写成Volt_current.read ,那是因为函数指针是结构体中的一个成员,它属于结构体,要调用它只能通过结构体变量调用,而不能直接调用。
你的第二个问题,函数声明的时候形参是结构体指针,是因为它通过函数指针调用函数的时候,它把结构体变量里面的成员都用来参与运算,所以声明时候形参需要时结构体指针,把结构体变量的地址给形参,函数就能通过形参指针找到结构体并访问结构体的成员用来计算。
如有不明白,加qq:
2楼??[求助]?
Re:函数指针定义在结构体中,如何调用函数
总积分:125分
发表于 13:16
额,没看到发帖时间,楼主可能已经明白了
--- 现有 3个主题,共 1页,目前第 1页 ---??
点击,立即回复。
EDN China官方微信
扫一扫关注,获取电子新知,设计灵感
IC厂商小组
在线研讨会
赞助商链接
2016 EDN China -- Use of this website is subject to its terms of use.
京ICP备号-4 |
京公网安备37 |
新版社区已上线,旧版论坛、博客将停用
1、为防数据丢失,旧版论坛、博客不再接受发帖;
2、老用户只需重设密码,即可直接登录新平台;
3、新版博客将于8月底完美归来,敬请期待;
4、全新论坛、问答,体验升级、手机阅读更方便。

我要回帖

更多关于 函数指针定义 的文章

 

随机推荐