【问题标题】:External Linkage of inline Functions/variables内联函数/变量的外部链接
【发布时间】:2019-11-18 14:40:06
【问题描述】:

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

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

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

3) 声明一些函数 inline static 有意义吗?

【问题讨论】:

标签: c++


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多