繁体   English   中英

将地址类型转换为函数指针

[英]Typecasting an address to Function pointer

我有来自u-boot,bootloader的特定代码,其中地址被类型转换为函数指针,但不确定执行该操作的目的

 void    (*kernel)(bd_t *, ulong r4, ulong r5, ulong r6,ulong r7, ulong r8, ulong r9);//prototype


 kernel = (void (*)(bd_t *, ulong, ulong, ulong,ulong, ulong, ulong))images->ep;

是在第一条语句中调用r4,r5,r6,r7,r8,r9时初始化寄存器吗?

其中images-> ep是内存地址,bd_ t是bord信息结构。

谁能让我知道在函数指针中键入大小写地址的目的。

好吧,大概他们将在某个时候将该指针作为一个函数来调用。 原始结构条目的名称为ep的事实说明了-可能代表“入口点”。 是否有类似的东西:

kernel(....) // appropriate arguments inserted

要么

(*kernel)(....)

在代码后面找到?

正如您提到的, images->ep是“内存地址”,这大概意味着它是某种指针类型。 在标准C中,指针类型之间的转换需要显式转换(除非其中之一为void * )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM