fn main() {
let val = 0;
unsafe { foo(&val) }
}
extern "C" {
pub fn foo(val: *const u32);
}
Implementation in C:
void foo(unsigned* val) { *val=1; }
Of course, I should pass val: *mut u32
, but what happens in the case that I pass an immutable reference? What compiler rules apply? Does val
remain unchanged even though I'm passing a pointer to the local variable?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…