首页 > 后端开发 > C++ > C 和 C 中的 `inline`、`extern inline` 和 `static inline` 有什么区别?

C 和 C 中的 `inline`、`extern inline` 和 `static inline` 有什么区别?

Barbara Streisand
发布: 2024-12-24 04:14:15
原创
621 人浏览过

What's the Difference Between `inline`, `extern inline`, and `static inline` in C and C  ?

extern inline 是做什么的?

与 inline 和 static inline 不同,extern inline 在特定上下文中使用:

在 C99 之前的编译器中,特别是 GCC,内联没有定义的语义。然而,GCC 实现了内联,作为编译器在可能的情况下内联函数的提示。尽管有此建议,但该函数的外联版本始终会发出并保持外部可见。

为了解决此限制,GCC 引入了 extern 内联和静态内联。

GNU89:

  • 内联:可能是内联,但始终会发出外联版本并且外部可见。
  • extern inline: 不生成外联版本,但可能从另一编译调用版本unit.
  • static inline: 不会生成外部可见的外联版本,但可能会生成文件静态一.

C99(或 GNU99):

  • inline: 与 GNU89 extern inline 类似,没有外部可见的函数被发射。
  • extern inline:与GNU89 inline类似,发出外部可见的代码,只允许一个翻译单元使用它。
  • static inline:与GNU89 static inline类似,没有外部符号或发出对一个的调用。

C :

  • 内联函数必须在所有编译单元中定义相同。
  • extern inline 或 static inline 没有标准定义,但一些编译器基于以下方式提供这些构造: GNU89 模型。

以上是C 和 C 中的 `inline`、`extern inline` 和 `static inline` 有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!

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