#define START ((void (**)(int)) 0x0fff)
*START = &fun_foo();
我以前没见过这个。这里发生了什么?void (**)(int) 是函数指针吗?
#define START ((void (**)(int)) 0x0fff)
*START = &fun_foo();
我以前没见过这个。这里发生了什么?void (**)(int) 是函数指针吗?
void (**)(int)
是一个指向一个函数的指针,该函数接受一个int
并且什么也不返回。
START
指向函数指针的指针也是如此,并且设置*START
为指向的实际函数指针也是如此fun_foo
。
在您的情况下,是指向函数指针START
的指针(位于固定地址)。0x0fff
但正如我在这个答案中所建议的那样,出于可读性原因,您可能希望使用 atypedef
作为该指向函数的签名。