2010-01-18 18 views
6

Utilizzando gcc, quando chiedo un oggetto/tipo di variabile usando typeid, ottengo un risultato diverso dal metodo type_info :: name da quello che mi aspetto di ottenere su Windows. Ho fatto un po 'di ricerche su Google e ho scoperto che i nomi RTTI sono specifici dell'implementazione.Posso decodificare i nomi RTTI di GCC?

Il problema è che voglio ottenere il nome di un tipo che verrebbe restituito su Windows. C'è un modo semplice per farlo?

risposta

1

I nomi di funzione C++ includono davvero tutte le informazioni sul tipo di ritorno e argomento, nonché il nome della classe e del metodo. Una volta compilati, vengono "storpiati" in una forma standard (standard per ciascun compilatore) che può fungere da simbolo dell'assemblatore e include tutte le informazioni sul tipo.

È necessario eseguire una funzione o un programma per invertire questo fenomeno, chiamato demangler.

prova ad eseguire

c++filt myoutput.txt 

sull'uscita della funzione. Questo demagge il il vero simbolo in una forma leggibile.

Problemi correlati