首页 > 后端开发 > C++ > 将 C 代码集成到 C 中时为什么要使用'extern 'C'{}”?

将 C 代码集成到 C 中时为什么要使用'extern 'C'{}”?

DDD
发布: 2024-12-04 06:37:14
原创
724 人浏览过

Why Use

在 C 中集成 C 代码的含义

使用 C 和外部 C 代码时,有必要弥合它们不同的之间的差距代码结构。由于编译和链接方面的差异,在 C 中集成 C 头文件会带来兼容性挑战。本文探讨了使用“extern "C"" 的原因以及如何解决这些问题。

为什么在 C 中使用“extern "C"{ #include }” ?

虽然表面上相似,但 C 和 C 编译器生成的代码却截然不同。 C 编译器预期包含的头文件中的 C 语法。但是,如果包含 C 标头,则编译器希望它遵守 C 的数据格式,特别是其应用程序二进制接口 (ABI)。这种差异会让链接器感到困惑,因此最好避免将 C 数据传递给 C 函数。

了解编译器/链接器不匹配

C 的 ABI 通常会更改函数和方法名称。例如,当尝试调用“printf()”函数而不将其原型标记为 C 函数时,C 编译器会生成调用“_Zprintf”的代码,从而导致其他复杂情况。

解决“extern "C"" 的问题

要解决此不兼容性,应使用“extern “C”包含 C 标头{...}”。这指示编译器将包含的代码解释为 C,确保编译的代码格式之间的匹配并防止链接器错误。虽然某些系统 C 标头已经考虑了 C 代码中的潜在包含并自动应用“extern “C”,但该指令对于未调整的标头至关重要。

以上是将 C 代码集成到 C 中时为什么要使用'extern 'C'{}”?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板