我尝试阅读各种GitHub问题以追踪区别,但最终只是感到困惑。#[no_mangle] pub extern fn foo() { ... } 对决#[no_mangle] pub extern "C" fn foo() { ... }
没有区别,因为正如参考资料所说: 默认情况下,外部块假定它们调用的库在特定平台上使用标准的C ABI。 extern "C" -- 无论您的C编译器默认支持什么,这与extern fn foo();相同。 问题已经被创建,要求始终明确声明extern "C",但是RFC已被拒绝。 在fmt-rfcs中有一个问题,是关于“我们应该将extern "C" fn格式化为那样还是extern fn?”。