Rust中extern fn和extern"C"fn有什么区别?

mar*_*hon 11 ffi rust

我已经尝试阅读各种github问题,试图找出差异是什么,只是最终混淆了.

#[no_mangle]
pub extern fn foo() {
   ...
}
Run Code Online (Sandbox Code Playgroud)

#[no_mangle]
pub extern "C" fn foo() {
   ...
}
Run Code Online (Sandbox Code Playgroud)

Sta*_*eur 13

没有区别,因为参考文献说:

默认情况下,外部块假定它们调用的库使用特定平台上的标准C ABI.

extern "C"- 这与extern fn foo();C编译器支持的默认值相同.

创建的问题始终要求明确说明extern "C"RFC已被拒绝.

有一个问题FMT-RFC中有关"我们应该格式化extern "C" fn为或extern fn?".