平台之间的不同 typeid

Vic*_*rzo 1 c++ linux windows clang typeid

我不明白为什么这个程序使用相同的编译器在 Linux 和 Windows 之间产生不同的输出。在 Windows 中它输出float而在 Linux 中它输出f

#include <typeinfo>
#include <iostream>

int main() {
        std::cout << typeid(float).name() << std::endl;
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

Cor*_*mer 5

typeid操作者返回从名称std::type_info,其被描述为

类 type_info 保存有关类型的特定实现的信息,包括类型的名称以及比较两种类型的相等性或整理顺序的方法。这是 typeid 运算符返回的类。

因此,它们如何选择命名类型是特定于实现的。这在std::type_info::name

返回包含类型名称实现定义的以空字符结尾的字符串。不提供任何保证;特别是,返回的字符串对于几种类型可以是相同的,并且在同一程序的调用之间会发生变化。