inline 关键字会影响链接时间优化吗? [复制]
Posted
技术标签:
【中文标题】inline 关键字会影响链接时间优化吗? [复制]【英文标题】:Does the inline keyword affect link time optimization? [duplicate] 【发布时间】:2015-08-15 10:00:54 【问题描述】:如果在启用链接时间优化 (-flto
) 的情况下调用 gcc
并且我正在使用以下关键字/属性之一:
__attribute__((always_inline)) void foo(int i);
inline void bar(int i);
此关键字/属性是否影响链接时优化的行为(如果编译器无法执行inline
ing)?
链接时优化是否更喜欢inline
ing 这些函数而不是没有此关键字/属性的函数。
问题是它是否对链接器-阶段处理而不是编译器产生影响。
【问题讨论】:
我不认为 LTO 对这种情况的影响与属性文档中已经解释的有很大不同。 【参考方案1】:根据之前在此处找到的答案:what “inline __attribute__((always_inline))” means in the function?
__attribute__((always_inline))
即使在首选项中禁用它,编译器也会尝试内联它,并且
inline
告诉编译器非常努力地内联函数。
【讨论】:
OP 的问题是它如何影响链接时间而不是编译时间 那里的答案只是指出要彻底阅读文档,这也是我在这种情况下所推荐的。您可能应该将该问题标记为与您找到的内容重复。尽管您提供了链接答案 +1 所提供的更多信息。 当我点击“标记”时,最接近复制的选项是“需要主持人干预”。这是我以后应该做的吗? 编辑了问题。我想知道 LTO(链接器)如何处理这些关键字,而不是编译器。 显然链接器执行自动内联,因此通过将该过程转移到编译器阶段,您可以加快链接阶段。不过,实际上可能并没有使整个过程更快。以上是关于inline 关键字会影响链接时间优化吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章