0

我有来自 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 是边框信息结构。

任何人都可以让我知道在函数指针中输入大小写地址的目的。

4

1 回答 1

3

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

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

或者

(*kernel)(....)

在后面的代码中发现?

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

于 2013-03-31T14:56:18.810 回答