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)
的typeid操作者返回从名称std::type_info,其被描述为
类 type_info 保存有关类型的特定于实现的信息,包括类型的名称以及比较两种类型的相等性或整理顺序的方法。这是 typeid 运算符返回的类。
因此,它们如何选择命名类型是特定于实现的。这在std::type_info::name
返回包含类型名称的实现定义的以空字符结尾的字符串。不提供任何保证;特别是,返回的字符串对于几种类型可以是相同的,并且在同一程序的调用之间会发生变化。