我读了Itanium ABI它说,RTTI跨模块边界在安腾和MSVC的ABI
它的目的有两个TYPE_INFO指针指向同等类型的描述,当且仅当指针相等。一个实现必须满足这个约束,例如通过使用符号抢占,COMDAT部分或其他机制。
有没有人知道关于如何在流行的平台上实现这一点的血淋淋的细节,例如使用GCC和GNU binutils的Linux,使用动态加载的库时?它有多可靠?
此外,我对这个typeid
的印象还不清楚,因为MSVC中的比较完全是因为这个需求不能得到满足,所以使用运行时字符串比较来对错误的符号名称进行比较。这仍然是它的方式吗?是否存在阻止MSVC使用与安腾ABI平台上所用技术相同的技术平台限制?
编辑一个问题:不例外地在模块间捕(任ABI)依靠RTTI信息为好,或者是有参与,除了比运行dynamic_cast
S的另一种等价的机制?