理解 extern inline
在 C 编程语言中,内联函数为编译器提供了一个提示,可以通过直接插入函数体来潜在地优化代码在调用时而不是生成单独的子例程
内联变体之间的差异
在 K&R C 和 C89 中,内联没有标准语义,但许多编译器以不同的解释支持它。 GCC 引入了三种变体:内联、静态内联和外部内联。
C99 和 GNU99
在 C99 中,对 extern inline 的语义进行了修改以反映 GNU89 的内联行为。内联和静态内联保持不变。
C
在 C 中,内联函数在使用的任何地方都必须具有相同的定义。同一符号的多个定义由编译器/链接器处理。 C 中没有定义 static inline 和 extern inline,尽管某些编译器可能支持它们。
使用 extern inline 确保内联
在您需要内联的特定场景中对于使用 FILE 和 LINE 宏的函数, extern inline 会不保证该函数将被内联。然而,它是最接近实现此所需行为的 C99 等效项。如果函数未内联,编译器或链接器可能会发出错误。
编译器和供应商差异
不同编译器供应商和版本之间的行为可能会有所不同,因此始终建议您查阅适合您环境的特定文档。
以上是C 和 C 中的'内联”、'静态内联”和'外部内联”有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!