4
#[link(name = "jack")]
extern "C" {
pub fn jack_client_open(name: *const libc::c_char,
options: JackOptions,
status: &JackStatus)
-> *mut JackClientT;
}
を使用し錆で
jack_client_t* jack_client_open ( const char * client_name,
jack_options_t options,
jack_status_t * status,
...)
を呼び出す問題に実行を錆からJACK-AUDIO-CONNECTION-KIT(documentation)を使用しようとすると壊れます
私は、それが動作する4つの文字で例えばname
を使用
let name = CString::new("yass").unwrap().as_ptr();
ただし、5文字以上を使用すると動作しません。上にリンクされたJACKドキュメントでは、その名前は最大でint jack_client_name_size()
文字であり、私の場合は64文字であると言われています。なぜこれが起こるのですか?
感謝しています。ありがとう!ドキュメントの警告は良いです。 RFCの提案から、多くの初心者(私のような)がこれと闘っているようです。生ポインタが "* _ptr"で終わっていない場合に警告を出すことは、ユーザに生ポインタの命名規則を使用させることを "促す"ことは意味がありますか?たぶん長期的には正しいメモリ管理に関する警戒感が増し、何かが間違っているとコンパイラがエラーに陥らないように促すでしょう。より多くの先進的な人々が警告を無効にすることができます – poidl