我有一个如下定义的函数指针:
typedef void (*FPT)(void);
FPT Fp;
指针变量" Fp"位于地址0x1234 我的功能定义如下:
void myfunc (void)
{
return;
}
我无法访问符号名称" Fp"但我知道它的地址(0x1234)。现在我如何将myfunc()的地址分配给" Fp" ??
答案 0 :(得分:1)
这应该做你想要的。
FPT *fpt_pointer = (FPT *)0x1234;
*fpt_pointer = myfunc;
但请注意,拥有像这样的硬编码地址是非常糟糕的做法。我不知道你是否真的打算这样做(不要!),或者你是否只是用这种方式来描述它来简化问题。下次运行程序时很可能会中断(即使没有因地址空间布局随机化而重新编译)。