链接硬编码函数指针

Sed*_*ien 1 c++ pointers initialization

我知道具有已知签名的特定函数位于已知地址.如何在C++中初始化函数指针?

我尝试了以下(及其许多变化)无济于事:

int (*FunctionName)(int arg1, long arg2, char *arg3) = (int (*FunctionName)(int arg1, long arg2, char *arg3))0xCAKE;
Run Code Online (Sandbox Code Playgroud)

我感觉右边的表达式会导致麻烦,因为代码会在初始化为0x0/时编译NULL.有什么指针吗?(双关语).

Cas*_*Cow 5

除了CAKE不是正确的十六进制值这一事实,因为K不是有效的十六进制字符,加上有关不同指针类型的任何问题,您的主要错误是FunctionName是一个不是类型的变量.

这就像在做

px = (px)0xBADFACE;

其中px是常规指针

如果你删除右边的FunctionName,剩下的就可以了,但是更容易成为一个typedef.

typedef int( *FuncType)(int arg1, long arg2, char * arg3 );
FuncType FunctionName = (FuncType)(0xCAFE);
Run Code Online (Sandbox Code Playgroud)