1
#define START ((void (**)(int)) 0x0fff)

*START = &fun_foo();

我以前没见过这个。这里发生了什么?void (**)(int) 是函数指针吗?

4

2 回答 2

3

void (**)(int)是一个指向一个函数的指针,该函数接受一个int并且什么也不返回。

START指向函数指针的指针也是如此,并且设置*START为指向的实际函数指针也是如此fun_foo

于 2012-10-05T05:00:20.250 回答
1

在您的情况下,是指向函数指针START的指针(位于固定地址)。0x0fff

但正如我在这个答案中所建议的那样,出于可读性原因,您可能希望使用 atypedef作为该指向函数的签名。

于 2012-10-05T04:59:27.413 回答