如何在Rust中获取函数地址? '& somefunction'究竟意味着什么?如何获取函数的地址?
什么地址我能得到这样
std::mem::transmute::<_, u32>(function)
或
std::mem::transmute::<_, u32>(&function)
(在32位系统,当然)?
是什么
&function as *const _ as *const c_void
给?
UPD。 @Shepmaster下面的答案给出了这个问题的答案(尽管也给出了其他不相关的东西,但可能对某些人的信息有用)。我在这里总结一下。
获取地址很容易,只要
funct as *const()
参考的功能似乎产生了一个局部变量,就像用
let a = &42;
你熟悉的[锈病游乐场(https://play.rust-lang.org /)?它可以让你回答像“这个代码有什么输出”的问题。 – Shepmaster
如果您希望将指针存储在一个整数中,请使用'usize'而不是'u32'或'u64',它将保证与指针的大小相同。 –
@Shepmaster:我知道这段代码的输出是什么(我知道如何运行防火墙程序,是的;-)),问题是关于我得到了什么确切的地址,并且你回答下面的问题揭示了它。 –