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