静态内联,外部内联和普通内联函数之间有什么区别?
static inline
, extern inline
和普通inline
函数之间有什么区别?
我已经看到了一些模糊的解释。 据我所知, static inline
不仅仅是一个inline
函数,只能在某个文件中引用,因为static
关键字通常意味着。 extern inline
也是如此,我想,这与extern
变量的解释不一样。 任何答案将不胜感激!
带有static inline
联的函数定义定义了具有内部链接的内联函数。 这样的函数从这些限定符的“通常”属性“按预期”工作: static
赋予它内部链接, inline
使其内联。 因此,此函数对于翻译单元是“本地的”并且在其中内联。
仅使用inline
联的函数定义定义了具有外部链接的内联函数。 但是,这种定义称为内联定义 ,它不能作为该函数的外部定义 。 这意味着即使此函数具有外部链接,它也将被视为未定义其他翻译单元,除非您在某处为其提供单独的外部定义 。
具有extern inline
联的函数定义定义了具有外部链接的内联函数,同时该定义用作此函数的外部定义 。 可以从其他翻译单元调用此类function。
最后两段意味着您可以选择为具有外部链接的内联函数提供单个extern inline
定义,或者为其提供两个单独的定义:一个inline
和另一个extern
。 在后一种情况下,当您调用该函数时,允许编译器选择两个定义中的任何一个。