c++ - 名称修饰的约定

标签 c++

对于函数来说:

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/

相关文章:

unix - 查找给定范围内毕达哥拉斯三元组的数量

没有 "Windows Forms"或 "Framework"的 C++ GUI

c++ - 如何理解在某些情况下允许实现将非局部变量的动态初始化视为静态初始化?

c++ - Qt 5.3 QPlainTextEdit 实现滚动锁

c++ - for循环重用变量的位置

双重访问查找操作所需的结构的 C++ 容器

c++ - 在 Qt 中,如何从 QNetworkRequest 中删除所有证书颁发机构的证书?

c++ - 从偏移量开始复制到结构的开头

c++ - 调用子覆盖时始终调用父类(super class)虚函数

C++风格的构造函数调用