对于函数说:
long myfunction(int,float)
编译器可以将此接口记录为:
?MyFunctionFoo@@YAXH
如果我理解正确,装饰原始名称的其他字符编码参数的数量和类型。
标准所说的(1.3.17)关于重整的所有内容是:
签名用作名称修改和链接的基础。
编译器是否遵循上述编码方案的标准惯例?
或者,两个编译器是否需要为同一个函数提供相同的装饰名称?
答案 0 :(得分:5)
所有编译器是否遵循单一标准方案?
没有。这也回答了你的第二个问题。
名称修改是ABI的一个功能。并且有标准的ABI,多个编译器为其生成代码。例如,Itanium ABI是几个编译器实现的has its own name mangling scheme。
但是C ++标准没有对名称修改提出任何要求。实际上,它甚至没有说要进行这样的名称修改。
答案 1 :(得分:0)
编译器是否遵循上述编码方案的标准约定?
否,名称处理编码方案没有标准约定。每个编译器都有自己的名称处理方案。
其中的某些内容在name mangling scheme中进行了描述。请转到文档中的名称处理部分。