Falsche Zuordnung von C struct zu Rust
us pädagogischen Gründen versuche ich, auf das @ zuzugreifeFILE
struct in Rust:
unsafe {
let passwd = libc::fopen("/etc/passwd".to_ptr(), &('r' as libc::c_char));
let fp = &mut *(passwd as *mut MY_FILE);
println!("flags={}, file={}", fp._flags, fp._file);
}
dasMY_FILE
struct habe ich durch Ausführen von bindgen auf stdio.h erhalten (ich bin auf OS X):
bindgen /usr/include/stdio.h
Irgendwie_flags
ist immer8
für Dateien, die im Schreibmodus geöffnet sind (4 im Lesemodus), daher scheint dieses Flag deaktiviert zu sein (ich habe es mit einem @ getesteC
Code, um zu überprüfen, ob es sich tatsächlich nicht um 4 oder 8 handelt). Der Dateizeiger scheint jedoch richtig zu sein. Was könnte das verursachen? Extrahiere ich die Bindung aus der falschen Header-Datei? Gibt es etwas, das ich zum @ hinzufügen mus#[repr(C,)]
attribute?
Hie ist der vollständige Code einschließlich der Struktur.
Dies ist eine Folgefrage von eine frühere Frage