2010-06-17 6 views
2

Je dois ajouter automatiquement le nom de la méthode à certains messages de journalisation. J'utilise __FUNCTION__ pour le faire mais il génère le nom complet de la méthode (namespace :: class: method). Donc, cela gaspille beaucoup d'espace et rend les journaux moins lisibles. Est-il possible d'ajouter uniquement le nom de la méthode dans une macro, sans qualificatifs inutiles?nom de la méthode de génération dans une macro

Répondre

1

Si votre code d'enregistrement ressemble à ceci:

#define LOGCALL \ 
    clog << "Called " << __FUNCTION__ << endl; 

alors vous pouvez simplement écrire une fonction globale pour couper le nom de fonction selon les besoins et dire:

#define LOGCALL \ 
    clog << "Called " << MyTrim(__FUNCTION__) << endl; 
1

Ecrire une fonction qui prend char * argument et renvoie un pointeur sur le nom de la fonction. ensuite écrire

MyFunction(FUNCTION) 

Au lieu de

FUNCTION 

Cela a aussi l'avantage que vous pouvez passer dynamiquement entre les noms courts et longs.