MSVC功能需求
MSVC function demangling
我有下一个函数:
namespace TEST {
class TEST {
int a;
int b;
};
}
namespace UNION_TEST {
union UNION_TEST {
int a;
int b;
};
}
union UNION_TEST_NEW {
int a;
int b;
};
namespace NAMESPACE_1 {
namespace NAMESPACE_2 {
union UNION_NAMESPACE_2 {
int a, b;
};
}
}
void f1(UNION_TEST::UNION_TEST t, UNION_TEST::UNION_TEST t1) {
return;
}
void f2(UNION_TEST::UNION_TEST t, TEST::TEST c, UNION_TEST::UNION_TEST t1) {
return;
}
void f3(UNION_TEST_NEW u) {
return;
}
void f4(NAMESPACE_1::NAMESPACE_2::UNION_NAMESPACE_2 u, TEST::TEST c, UNION_TEST::UNION_TEST t1) {
return;
}
和对应的混乱符号为:
0x000034e0 2 .text ?f1@@YAXTUNION_TEST@1@0@Z
0x00003500 2 .text ?f2@@YAXTUNION_TEST@1@VTEST@2@0@Z
0x00003520 2 .text ?f3@@YAXTUNION_TEST_NEW@@@Z
0x00003530 2 .text ?f4@@YAXTUNION_NAMESPACE_2@NAMESPACE_2@NAMESPACE_1@@VTEST@4@TUNION_TEST@5@@Z
根据这个http://www.agner.org/optimize/calling_conventions.pdf(第27页),我们有联合X -> TX@@,那么为什么对于函数f1, f2没有@@在末尾,以及如何区分何时联合与命名空间是结束和开始下一个参数?
感谢您的关注和帮助。
正如您所观察到的,将联合名称X
转换为TX@@
的声明并不是对您的MSVC版本所使用的名称混淆的正确描述。请注意,"agner.org"与微软无关,也不提供官方文档。
至于你的问题是如何将一个混乱的名称的不同部分分开,看来一个@就足够了。
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 多态性和功能结合
- MSVC多行宏编译器错误
- 带内存和隔离功能的SQLite
- 在CMakeLists.txt的安装功能中使用.cmake文件有什么用
- 类模板的成员功能的定义在单独的TU中完全专业化
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何在C++中获得"静态纯虚拟"功能?
- 为什么使用__LINE_的代码在发布模式下在MSVC下编译,而不是在调试模式下
- MSVC是否支持C++11样式的属性而不是__declspec
- 两个文件使用彼此的功能-如何解决
- 我应该实现右值推送功能吗?我应该使用std::move吗
- QML按钮点击功能执行顺序
- MSVC将仅移动结构参数解释为指针
- MSVC 忽略 [[maybe_unused]] 的功能?
- 如何求解与GCC/Clang不同的C 功能模板的MSVC处理(无法识别的模板定义)
- GCC称将功能与多个继承过载时,称其为模棱两可,但Clang和MSVC没有
- 错误LNK2019:未解决的外部符号-MSVC调试构建功能模板
- 消除对Boost ::的需求,以绑定我的功能
- MSVC功能需求