[讨论] C2000MCU的结构体定义中的void (*calc) ()的理解

木木木JS   2015-9-13 14:39 楼主
在看TI的BLDC3_1的例程,其中很多模块的定义中,举一个例子来说,比如MOD6_CNT的模块(一个模为6的计数器)
他的模型和结构体定义如下:
捕获2.JPG

捕获1.JPG

TrigInput和Counter自不必说,最后的“void (*calc) ()”是什么意思又有什么作用呢?
请高手指点一二!

回复评论 (12)

函数指针,这不是C2000的特色。是C语言
点赞  2015-9-13 14:43
函数指针。
点赞  2015-9-13 15:21
水军来学习
作为一个水军,就是尽量的多回帖,因为懂的技术少,所以回帖水分大,见谅! EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,商家勿入!加群暗号:喵
点赞  2015-9-13 15:31
首先,他的数据类型是void,表明无数据类型;其次(*(calc))他是个指针函数,总体来说就是不带数据类型的指针函数
点赞  2015-9-13 15:47
引用: huaiqiao 发表于 2015-9-13 15:47
首先,他的数据类型是void,表明无数据类型;其次(*(calc))他是个指针函数,总体来说就是不带数据类型 ...

是函数指针,不叫指针函数。
点赞  2015-9-13 20:12
引用: lcofjp 发表于 2015-9-13 20:12
是函数指针,不叫指针函数。

对对对,二者是有区别的。
点赞  2015-9-13 21:11
无返回值无输入参数的函数指针
点赞  2015-9-13 22:56
引用: huaiqiao 发表于 2015-9-13 21:11
对对对,二者是有区别的。

但是这个指针在这个模块里面有什么作用呢?很多模块都有这个指针。
点赞  2015-9-13 22:58
引用: 247153481 发表于 2015-9-13 22:56
无返回值无输入参数的函数指针

请问这个指针在这些模块里面有何作用呢?
点赞  2015-9-13 22:58
后面的注释就是他的功能啊,因为c语言里面struct是不能加入方法(函数)的,那么如果想通过结构体调用方法,那么就可以采用函数指针
点赞  2015-9-13 23:15
引用: 木木木JS 发表于 2015-9-13 22:58
但是这个指针在这个模块里面有什么作用呢?很多模块都有这个指针。

我对它的理解就是不指向确定的类型的函数指针。显然看起来这个函数是用来计算的。具体的功能还要看具体的函数的内容 了。
点赞  2015-9-13 23:52
无返回值的函数指针。应该跟你后续类似的计算函数有关。这应该是个类型定义吧  还得看你的实体功能
点赞  2015-9-15 11:59
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复