首页 > 后端开发 > C++ > C/C 中的'内联”、'静态内联”和'外部内联”有什么区别?

C/C 中的'内联”、'静态内联”和'外部内联”有什么区别?

Susan Sarandon
发布: 2024-12-20 08:07:10
原创
704 人浏览过

What is the Difference Between `inline`, `static inline`, and `extern inline` in C/C  ?

理解 extern inline 的作用

在编程领域,内联函数可以作为优化来提高性能。内联函数是对编译器的建议,邀请编译器考虑将函数的实现直接合并到调用者的代码中,从而有效地消除函数调用开销。然而,编译器保留自由裁量权,可能并不总是遵守内联请求。此外,内联函数通常会生成可链接的目标代码。

考虑静态内联,其在可选函数内联方面的操作与内联类似。但是,如果内联,它不会生成可链接的目标代码。这可以防止其他模块链接到内联函数。

深入研究 extern inline

extern inline 适合这个方案的什么地方?外部内联,主要出现在 C99 之前的编译器中,例如 GCC,其行为与内联和静态内联截然不同。

  • 内联:可能或可能不是内联,但总是产生可链接的目标代码。
  • 静态内联:可以内联也可以不内联,但是不产生可链接的目标代码。
  • extern inline:不产生可链接的目标代码,并且需要在另一个编译单元中存在外联版本。

超越 C 和 C

这种区别是 C 独有的和 C .在 C 中,inline 的含义已经演变,它类似于 C89 中的 extern inline,但不包括行外定义的要求。

编译器变体

不同的编译器供应商和版本可以以不同的方式解释 extern inline。具体实现细节请参考编译器文档。

以上是C/C 中的'内联”、'静态内联”和'外部内联”有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!

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