extern fn和extern" C"之间的区别是什么?在Rust吗?

时间:2017-06-20 23:47:49

标签: rust ffi

我已经尝试过阅读各种github问题,试图找出差异是什么,最后感到困惑。

#[no_mangle]
pub extern fn foo() {
   ...
}

VS

#[no_mangle]
pub extern "C" fn foo() {
   ...
}

1 个答案:

答案 0 :(得分:12)

没有区别,因为the reference说:

  

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

     

extern "C" - 无论C编译器支持哪种默认值,都与extern fn foo();相同。

创建issue时始终要求明确说明extern "C"RFC has been refused

issue中有fmt-rfcs关于"我们应该将extern "C" fn格式化为extern fn吗?"。