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

时间:2019-11-18 14:40:06

标签: c++

我知道什么是函数的静态关键字。 但是我不明白什么是内联关键字对功能的意义。 我知道内联函数是 调用时会在行中展开。但是内联它对编译器的报价,他可以忽略它。 也许编译器可以优化某些功能并使之内联。

1)那为什么我需要内联声明函数,如果编译器比我更了解何时需要内联函数,何时不应该内联?

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

3)声明一些内联静态函数是否有意义?

1 个答案:

答案 0 :(得分:1)

需要使用inline关键字来防止违反ODR(一个定义规则)。它与编译器是否真正内联函数无关,它仅告诉编译器每个翻译单元都需要定义。

关于“外部链接”,这允许static函数中的inline变量在所有翻译单元之间共享(您可以期望)。如果inline函数具有“内部链接”,则该函数的每个副本(在每个翻译单元中)都将以其自己的静态变量实例结束,这没有多大意义。