打印

有一个回调的看不太懂其意义,大家来讨论一下

[复制链接]
884|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yanandren|  楼主 | 2016-6-2 11:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

大家好,

C文件里定义了一个
typedef void (*start_fn_t)(const sysparam_t *param);

另外,结构体的定义:
typedef struct {
    const char * bootver;
    uint32_t master_addr;
    uint32_t config_addr;
    const rsa_pub_key_t * key;
}sysparam_t;
extern const sysparam_t * sysparam;



最后,在一个函数里这样调用了一下
    ((start_fn_t)(*(uint32_t *)  (sysparam->master_addr + 4)))(sysparam);





这句话是函数的最后一句话,这句话看不懂啊。。貌似就是把一个地址强转成一个函数,然后带了个自己的参数,可是没有函数体啊。。函数使用typedef来定义的

相关帖子

沙发
lgq1542380129| | 2016-6-2 12:22 | 只看该作者
最后一句函数的类型:start_fn_t,函数的地址存放在sysparam->master_addr偏移4个字节的地址里面,函数的形参sysparam,但是定义了extern const sysparam_t * sysparam(只读类型),应该在程序的某些地方赋值的时候强制转换了。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
yanandren + 1 很给力!
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

17

帖子

0

粉丝