вывод typeinfo / typeid - PullRequest
       1

вывод typeinfo / typeid

9 голосов
/ 07 октября 2010

В настоящее время я пытаюсь отладить фрагмент простого кода и хочу посмотреть, как конкретный тип переменной изменяется во время программы.

Я использую заголовочный файл typeinfo, чтобы я мог использовать typeid.name (). Я знаю, что typeid.name () зависит от компилятора, поэтому вывод может быть не особенно полезным или стандартным.

Я использую GCC, но не могу найти список потенциальных выходных данных, несмотря на поиск, предполагая, что список выходных символов typeid существует. Я не хочу выполнять какие-либо преобразования на основе выходных данных или манипулировать какими-либо данными, просто следуйте их типу.

#include <iostream>
#include <typeinfo>

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

Есть ли где-нибудь список символов?

1 Ответ

15 голосов
/ 07 октября 2010

Я не знаю, существует ли такой список, но вы можете сделать небольшую программу для их распечатки:

#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*);
    //...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...