#define START ((void (**)(int)) 0x0fff)
*START = &fun_foo();
我以前没见过这个。这里发生了什么? void(**)(int)是函数指针吗?
答案 0 :(得分:3)
void (**)(int)
是指向函数的指针,该函数接受int
并且不返回任何内容。
因此START
是函数指针的指针,而*START
是实际的函数指针,它被设置为指向fun_foo
。
答案 1 :(得分:1)
在您的情况下,START
是指向函数指针的指针(位于固定地址0x0fff
)。
但正如我在this answer中建议的那样,出于可读性原因,您可能希望使用typedef
来表示该指向函数的签名。