gpt4 book ai didi

c++ - 是否允许 C++ 编译器/链接器删除未使用的方法?

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

是否允许 C++ 编译器或链接器(根据任何 C++ 标准)删除未使用的方法?似乎允许编译器删除未使用的静态函数,允许链接器删除未使用的函数。但是我没有找到关于类方法的信息。当方法是虚拟的时,这会变得非常有趣。

最佳答案

是的。

如果该方法未被使用,则无法判断它已被删除 - 因此链接器可以这样做。请注意,获取方法的地址很可能算作“使用”该方法 - 而不仅仅是实际调用它。

链接器很可能会删除非虚拟成员函数(这很容易并且节省空间)。

它们可以删除未使用的虚函数,但编译器必须添加大量有关它正在调用的虚函数的信息,以便链接器可以删除未使用的虚函数(并可能压缩 vtable) .实际上,我认为链接器不会这样做,因为 yield 可能很小,而且所需的开发工作量相当大。

关于c++ - 是否允许 C++ 编译器/链接器删除未使用的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35648348/

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