对于函数来说:
long myfunction(int,float)
编译器可能会将此接口(interface)记录为:
?MyFunctionFoo@@YAXH
如果我没理解错的话,装饰原始名称的附加字符编码参数的数量和类型。
标准 (1.3.17) 关于 mangling 的所有内容是:
Signatures are used as a basis for name mangling and linking.
编译器是否遵循上述编码方案的标准约定?
或者,是否需要两个编译器为同一个函数提供相同的修饰名称?
最佳答案
Do all compilers follow a single standard scheme?
没有。这也回答了你的第二个问题。
名称重整是 ABI 的一项功能。还有标准的 ABI,多个编译器为其生成代码。 Itanium ABI,例如,has its own name mangling scheme几个编译器实现的。
但 C++ 标准没有对名称修改提出任何要求。事实上,它甚至没有说需要这样的名称修改。
关于c++ - 名称修饰的约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38342100/