【发布时间】:2023-01-29 00:47:56
【问题描述】:
我有这样的代码。代码正在运行 我知道代码打印 'm' 因为 demangling (https://gcc.gnu.org/onlinedocs/libstdc++/manual/ext_demangling.html)
但是为什么编译器为size_t 打印'm'?
映射的逻辑是什么('i' --> int // 很清楚,但是为什么'm' --> size_t)
#include <typeinfo>
using namespace std;
int main() {
size_t i = 5;
cout << "Type: " << typeid(i).name() << '\n'; // Type: m
}
【问题讨论】:
-
我没有看到您的代码中发生任何 demangling。
-
我认为你混淆了 mangling 和 demangling。 Mangling 将面向用户的名称(如
int)转换为 ABI 名称(如i),而 demangling 是相反的过程,你将 ABI 名称(如i)转换回用户友好的名称(如int)。