名称重整的约定
Conventions for name mangling
本文关键字:约定 更新时间:2023-10-16
对于一个函数来说:
long myfunction(int,float)
编译器可以将此接口记录为:
?MyFunctionFoo@@YAXH
如果我理解正确,装饰原始名称的附加字符对参数的数量和类型进行了编码。
该标准(1.3.17)关于重整的所有内容都是:
签名用作名称重整和链接的基础。
编译器是否遵循上述编码方案的标准约定?
或者,是否需要两个编译器为同一函数提供相同的修饰名称?
是否所有编译器都遵循单一的标准方案?
不。这也回答了你的第二个问题。
名称重整是 ABI 的功能。还有标准 ABI,多个编译器为其生成代码。例如,Itanium ABI 有自己的名称重整方案,多个编译器实现了该方案。
但C++标准没有对名称重整提出要求。事实上,它甚至没有说需要这样的名称修改。
编译器是否遵循上述编码方案的标准约定?
否,名称重整编码方案没有标准约定。每个编译器都有自己的名称重整方案。
这里描述了其中一些名称重整方案。请转到文档中的名称重整部分。
相关文章:
- "std::unique_XXX"命名约定背后的基本原理是什么?
- 为什么在 x64 中忽略__stdcall调用约定?
- 引发异常的方法的命名约定 (C++)?
- 窗口调用约定
- 我应该提到纯虚函数中的调用约定吗?
- C++:在进行切片时对迭代器的约定,特别是对于访问最后一个元素并最终将其删除
- 如何使用gcc指定stdcall调用约定
- Clang:x86 FPU调用约定
- 该标准是否说明了例外和不同调用约定的共存
- Clang++的InterlockedExchange的32位调用约定错误,但MSVC可以
- std::sort & comp - 调用约定?
- C++命名空间约定
- C++的新手试图弄清楚类约定
- 如何为类 /块 /范围选择C 调用约定
- C 未知呼叫约定
- C++关于传递对象(指针与引用)的约定
- DLL 的"good"调用约定是什么?
- 结构中重载运算符的调用约定
- 一些编码约定/标准实践问题
- 'ShowSUM':__declspec(dllexport)不能应用于具有__clrcall调用约定的函数