gpt4 book ai didi

c++ - RVO 和复制省略是否只能在一个编译单元内工作?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:44:13 26 4
gpt4 key购买 nike

它们是否跨不同的目标文件工作?它们跨不同的 DLL 工作吗?

我知道这取决于编译器。我很好奇是否有任何编译器和优化设置可以使这项工作正常进行。

最佳答案

通常,是的,但原则上,使用链接时间优化(-flto 用于 GCC/Clang 编译器和链接器)或链接时间代码生成(/LTCG/GL 用于 MSVC 的编译器和链接器),编译器和链接器可以利用它们共享的知识,也许还可以利用内联代码和省略拷贝。 GCC 的 manual状态:

[...] this causes all the interprocedural analyses and optimizations in GCC to work across the two files as if they were a single one. This means, for example, that the inliner is able to inline functions in bar.o into functions in foo.o and vice-versa.

请注意,这不适用于 DLL,因为共享库的代码是固定的并且已经完全编译。

RVO 只需要有关函数本身的信息(因为它就地构造函数的返回值,而不是在 return 上复制/移动。这可能在没有 aboce 选项的情况下工作。

关于c++ - RVO 和复制省略是否只能在一个编译单元内工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23777863/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com