查看: 4016|回复: 12

[求助] 指针 函数

[复制链接]

该用户从未签到

7

主题

50

帖子

0

中级会员

Rank: 3Rank: 3

积分
214
最后登录
2017-9-1
发表于 2016-3-22 09:34:40 | 显示全部楼层 |阅读模式
typedef void(*pt2FuncU8)(UINT8);          /* Pointer to Functions, UINT8 argument */

/**********************************************************************************************
* Global variables
**********************************************************************************************/
pt2FuncU8 KBI_Callback;


void KBI_SetCallback(pt2FuncU8 ptr)
{
        KBI_Callback = ptr;       
}

这三段 怎么联系起来的   求大神指导
                       
       

我知道答案 目前已有12人回答
回复

使用道具 举报

  • TA的每日心情
    慵懒
    2016-11-4 16:56
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    8

    主题

    602

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1842
    最后登录
    2020-8-25
    发表于 2016-3-22 10:45:33 | 显示全部楼层
    这是函数指针:指向函数的指针。标题有问题,或者你干脆写“指针和函数”以免误解。
    你说的那3个都是在声明和定义一些事情,没有具体的执行。
    下面的表示pt2FuncU8是一个指向函数的指针类型,他是个类型,可以用来定义变量。
    typedef void(*pt2FuncU8)(UINT8);
    比如,下面的:
    pt2FuncU8 KBI_Callback;
    KBI_Callback就是函数指针变量了。
    KBI_SetCallback就是给KBI_Callback赋值的函数,具体什么值由调用者传入。

    比如,定义了2个函数:
    void add(UINT8 i);
    void mut(UINT8 i);
    你可以调用KBI_SetCallback,并把add或mut作为实参传进去,这样就可以通过全局的KBI_Callback执行具体的函数了,比如执行add或mut。这其实在执行“多态”的功能。

    不知道这是哪的代码,但并不是好的一个“多态”的方案。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    118

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    366
    最后登录
    2016-6-14
    发表于 2016-3-22 13:13:22 | 显示全部楼层
    典型的回调函数写法!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    59

    帖子

    0

    注册会员

    Rank: 2

    积分
    152
    最后登录
    2016-5-11
    发表于 2016-3-22 16:18:20 | 显示全部楼层

    2
    主题       
    62
    帖子       
    155
    积分
    注册会员
    Rank: 2
    积分155
    发消息       
    板凳
    发表于 2016-3-22 13:13 | 只看该作者
    典型的回调函数写法!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    59

    帖子

    0

    注册会员

    Rank: 2

    积分
    152
    最后登录
    2016-5-11
    发表于 2016-3-22 16:18:40 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-5-23 06:13
  • 签到天数: 1082 天

    连续签到: 1 天

    [LV.10]以坛为家III

    18

    主题

    1974

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    6147
    最后登录
    2025-7-17
    发表于 2016-3-22 21:37:12 | 显示全部楼层
    学习了,,,,,
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-6-24 18:51
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    17

    主题

    565

    帖子

    0

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2004
    最后登录
    2021-3-10
    发表于 2016-3-23 10:45:15 | 显示全部楼层
    回调函数. 搞arm必须遭遇的一部分.貌似现在很多已经不用了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7

    主题

    50

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    214
    最后登录
    2017-9-1
     楼主| 发表于 2016-3-23 11:44:38 | 显示全部楼层
    moyanming2013 发表于 2016-3-22 10:45
    这是函数指针:指向函数的指针。标题有问题,或者你干脆写“指针和函数”以免误解。
    你说的那3个都是在声明 ...

    谢谢  
    可以调用KBI_SetCallback,并把add或mut作为实参传进去,这样就可以通过全局的KBI_Callback执行具体的函数了, 这个地方不知道具体怎么用的  有点不明白
    这个是KEA128里面的KBI例程
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7

    主题

    50

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    214
    最后登录
    2017-9-1
     楼主| 发表于 2016-3-23 11:45:33 | 显示全部楼层
    freescale-hua 发表于 2016-3-22 13:13
    典型的回调函数写法!

    能具体些吗
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    118

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    366
    最后登录
    2016-6-14
    发表于 2016-3-23 12:08:54 | 显示全部楼层

    楼上说的很清楚了
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-21 05:26 , Processed in 0.107097 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表