名称修改公约

时间:2016-07-13 03:16:04

标签: c++

对于函数说:

long myfunction(int,float)

编译器可以将此接口记录为:

?MyFunctionFoo@@YAXH

如果我理解正确,装饰原始名称的其他字符编码参数的数量和类型。

标准所说的(1.3.17)关于重整的所有内容是:

  

签名用作名称修改和链接的基础。

编译器是否遵循上述编码方案的标准惯例?

或者,两个编译器是否需要为同一个函数提供相同的装饰名称

2 个答案:

答案 0 :(得分:5)

  

所有编译器是否遵循单一标准方案?

没有。这也回答了你的第二个问题。

名称修改是ABI的一个功能。并且有标准的ABI,多个编译器为其生成代码。例如,Itanium ABI是几个编译器实现的has its own name mangling scheme

但是C ++标准没有对名称修改提出任何要求。实际上,它甚至没有说要进行这样的名称修改。

答案 1 :(得分:0)

  

编译器是否遵循上述编码方案的标准约定?

否,名称处理编码方案没有标准约定。每个编译器都有自己的名称处理方案。

其中的某些内容在name mangling scheme中进行了描述。请转到文档中的名称处理部分。