clang 损坏的名称随时间变化

clang mangled names varies over time

我们遇到了一些问题,但我没有找到任何文档。似乎有很多 class 成员等随着时间的推移会得到不同的名称。所以有一天,编译给它,例如,

_ZThn1128_N9TESTCLASS14ContentChangedEv

然后经过一天的开发,它得到了一些不同的前缀,比如

_ZThn1140_N9TESTCLASS14ContentChangedEv

你知道吗,这里的变化前缀是什么?我想,也许它与行号有某种联系,但不是。其次,我们如何确保这不会随时间变化?前缀肯定只是一些额外的,因为 demangled 名称保持不变,例如,如果我更改该数字。

提前致谢。

_ZThn1128_N9TESTCLASS14ContentChangedEv 被分解为 non-virtual thunk to TESTCLASS::ContentChanged()This Q&A 表明,错位符号名称的变化可能是由 TESTCLASS 的基数 类 之一的 sizeof 的变化规定的。