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中文网其他相关文章!