2010-01-18 18 views
6

En utilisant gcc, quand je demande un type d'objet/variable en utilisant typeid, j'obtiens un résultat différent de la méthode type_info :: name de ce que je m'attendais à obtenir sous Windows. J'ai parcouru un peu Google et découvert que les noms RTTI sont spécifiques à la mise en œuvre.Puis-je déshabiller les noms RTTI de GCC?

Le problème est, je veux obtenir le nom d'un type tel qu'il serait retourné sous Windows. Y a-t-il un moyen facile de faire ceci?

Répondre

1

Les noms de fonctions C++ incluent réellement toutes les informations de type retour et argument ainsi que le nom de la classe et de la méthode. Une fois compilées, elles sont transformées en un formulaire standard (standard pour chaque compilateur) qui peut agir comme un symbole assembleur et inclure toutes les informations de type.

Vous devez exécuter une fonction ou un programme pour inverser cette opération, appelée demangler.

essayez d'exécuter

c++filt myoutput.txt 

sur la sortie de la fonction. Cette démange le vrai nom de symbole dans une forme lisible par l'homme.