gpt4 book ai didi

C++ 函数名称分解 : What does this name suffix mean?

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

当我反汇编 Chromium 二进制文件时,我注意到有一些函数以这种模式命名:_ZN6webrtc15DecoderDatabase11DecoderInfoD2Ev.part.1

如果我把这个字符串给c++filt,输出是webrtc::DecoderDatabase::DecoderInfo::~DecoderInfo() [克隆 .part.1]

那么这个 .part.1 后缀的真正含义是什么?如果它表明同一个函数有多个拷贝,他们为什么需要那个?是因为位置独立的要求吗?我使用 g++ 作为编译器。

最佳答案

它表示析构函数是 partial inlining optimization 的目标海湾合作委员会。通过这种优化,函数只是部分内联到另一个函数中,其余部分被发送到它自己的部分函数中。由于这个新的部分函数没有实现完整函数,因此它被赋予了不同的名称,因此如果需要,它可以存在于完整函数的定义旁边。

例如,DecoderDatabase::DecoderInfo::~DecoderInfo 似乎是定义如下:

DecoderDatabase::DecoderInfo::~DecoderInfo() {
if (!external) delete decoder;
}

我的猜测是 delete decoder 会调用一长串操作,太长而无法内联到另一个函数中。优化器会相应地将这些操作拆分为部分函数。然后它只会将函数的 if (!external) 部分内联到其他函数中。

关于C++ 函数名称分解 : What does this name suffix mean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31683913/

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