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

22

我尝试阅读各种GitHub问题以追踪区别,但最终只是感到困惑。

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

对决

#[no_mangle]
pub extern "C" fn foo() {
   ...
}
1个回答

25

没有区别,因为正如参考资料所说:

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

extern "C" -- 无论您的C编译器默认支持什么,这与extern fn foo();相同。

问题已经被创建,要求始终明确声明extern "C",但是RFC已被拒绝

fmt-rfcs中有一个问题,是关于“我们应该将extern "C" fn格式化为那样还是extern fn?”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接