繁体   English   中英

静态内联,外部内联和普通内联函数有什么区别?

[英]What's the difference between static inline, extern inline and a normal inline function?

static inlineextern inline和常规inline函数有什么区别?

我已经看到了一些模糊的解释。 据我所知, static inline不仅仅是一个inline函数,它只能像static关键字通常所指的那样在某个文件中被引用。 我猜extern inline也是如此,这与extern变量的解释不同。 任何答案将不胜感激!

具有static inline联的函数定义定义具有内部链接的内联函数。 此类函数从这些限定符的“常规”属性“按预期”起作用: static为其提供内部链接, inline使其为内联。 因此,此功能对于翻译单元是“本地的”,并且在其中内联。

inline联的函数定义定义具有外部链接的内联函数。 但是,这种定义称为内联定义 ,并且不能用作该函数的外部定义 这意味着即使该功能具有外部链接,也将被其他翻译单位视为未定义 ,除非您在某处为它提供了单独的外部定义

具有extern inline联函数的函数定义定义具有外部链接的内联函数,与此同时,该定义也用作该函数的外部定义 可以从其他翻译单元调用该函数。

最后两段意味着您可以选择为具有外部链接的内联函数提供单个extern inline定义,或者为其提供两个单独的定义:一个inline和另一个extern 在后一种情况下,当您调用函数时,允许编译器选择两个定义之一。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM