繁体   English   中英

内联函数/变量的外部链接

[英]External Linkage of inline Functions/variables

我知道 static 关键字是什么意思。 但我不明白 function 的内联关键字意味着什么。 我知道内联 function 是一个 function ,它在被调用时会在线展开。 但是内联它对编译器的报价,他可以忽略它。 也许编译器可以优化一些函数并使其内联。

1)那么为什么我需要内联声明函数,如果编译器比我更清楚什么时候需要 function 内联,什么时候不需要?

2)而且我知道内联函数具有“外部链接”或类似的东西。 这是什么意思?

3) 在内联 static 中声明一些函数是否有意义?

需要inline关键字来防止违反ODR (一个定义规则)。 它与 function 是否实际上被编译器内联无关,它只是告诉编译器每个翻译单元都需要一个定义。

关于“外部链接”,这允许内inline function 内的static变量在所有翻译单元之间共享(这是您所期望的)。 如果inline函数具有“内部链接”,那么 function(在每个翻译单元中)的每个副本最终都会得到它自己的 static 变量实例,这没有多大意义。

暂无
暂无

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

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