Der Versuch, die JACK-AUDIO-CONNECTION-KIT von Rust (documentation) zu verwenden, ich laufe in ProblemeJack Audio-Client-Name länger als 4 Zeichen bricht Client
jack_client_t* jack_client_open ( const char * client_name,
jack_options_t options,
jack_status_t * status,
...)
In Rust Aufruf Ich benutze
#[link(name = "jack")]
extern "C" {
pub fn jack_client_open(name: *const libc::c_char,
options: JackOptions,
status: &JackStatus)
-> *mut JackClientT;
}
Wenn ich ein name
mit vier Zeichen verwenden es funktioniert, zB
let name = CString::new("yass").unwrap().as_ptr();
aber wenn ich 5 oder mehr Zeichen verwende, funktioniert es nicht. In den JACK-Dokumenten, die mit oben verknüpft sind, heißt es, dass der Name maximal int jack_client_name_size()
Zeichen lang sein kann, was in meinem Fall 64 ist. Warum passiert das?
Macht jetzt Sinn, danke! Die Warnung in den Dokumenten ist gut. Aus dem RFC-Vorschlag scheint es, dass viele Anfänger (wie ich) damit zu kämpfen haben. Wäre es sinnvoll, Benutzer zu "ermutigen", eine Benennungskonvention für unformatierte Zeiger zu verwenden, d. H. Eine Warnung auszugeben, wenn unformatierte Zeiger nicht in "* _ptr" enden. Vielleicht würde dies auf lange Sicht die Wachsamkeit in Bezug auf die korrekte Speicherverwaltung erhöhen und würde Leute dazu bringen, sich nicht auf den Compiler zu verlassen, wenn etwas nicht stimmt. Mehr Vorreiter könnten die Warnung deaktivieren. – poidl