typeinfo / typeid输出

时间:2010-10-07 16:07:10

标签: c++ gcc types

我目前正在尝试调试一段简单的代码,并希望了解特定变量类型在程序中的变化。

我正在使用typeinfo头文件,因此我可以使用typeid.name()。我知道typeid.name()是特定于编译器的,因此输出可能不是特别有用或标准。

我正在使用GCC但是我无法找到潜在输出的列表,假设存在一个typeid输出符号列表。我不想根据输出做任何类型的转换或操纵任何类型的数据,只需按照其类型。

#include <iostream>
#include <typeinfo>

int main()
{ 
    int a = 10;
    cout << typeid(int).name() << endl;
}

在任何地方都有符号列表吗?

1 个答案:

答案 0 :(得分:15)

我不知道这样的列表是否存在,但你可以创建一个小程序来打印它们:

#include <iostream>
#include <typeinfo>

#define PRINT_NAME(x) std::cout << #x << " - " << typeid(x).name() << '\n'

int main()
{
    PRINT_NAME(char);
    PRINT_NAME(signed char);
    PRINT_NAME(unsigned char);
    PRINT_NAME(short);
    PRINT_NAME(unsigned short);
    PRINT_NAME(int);
    PRINT_NAME(unsigned int);
    PRINT_NAME(long);
    PRINT_NAME(unsigned long);
    PRINT_NAME(float);
    PRINT_NAME(double);
    PRINT_NAME(long double);
    PRINT_NAME(char*);
    PRINT_NAME(const char*);
    //...
}