当前位置: 代码迷 >> 综合 >> GCC下的 typeid().name()
  详细解决方案

GCC下的 typeid().name()

热度:100   发布时间:2023-11-27 02:29:01.0

typeid().name()可以返回变量、函数、类的数据类型名

输出不完整名称

#include<iostream> 
#include <typeinfo> 
using namespace std;
int main(){
    typedef char * Strings[10];									Strings 代表 char *[10]char * a[10];Strings ml;													Strings ml 就相当于 char *ml[10];cout << typeid(a).name() << endl;cout << typeid(Strings).name() <<endl;cout << typeid(ml).name() <<endl;
}输出:
A10_Pc
A10_Pc
A10_Pc

输出完整名称

要加上#include <cxxabi.h> 这个头文件。

#include<typeinfo>
#include<iostream> 
#include <cxxabi.h> // 使用abi
using namespace std; 
int main(){
    
typedef char * Strings[10]; 
char * a[10];
Strings ml;
cout<<abi::__cxa_demangle(typeid(a).name(),0,0,0 )<<endl;
cout<<abi::__cxa_demangle(typeid(Strings).name(),0,0,0 )<<endl;
cout<<abi::__cxa_demangle(typeid(ml).name(),0,0,0 )<<endl;
}输出:
char* [10]
char* [10]
char* [10]