Bonjour,
Je travaille sur un système de log dans un vieux projet dont code est très loin d'être un modèle de propreté (6000 lignes de codes avec un switch de 3000 lignes, des returns et des goto).
Pour log, on utilise une maccro :
DEBUG_LOG(...);
Pour que les logs soient plus lisibles, on doit y ajouter un système de Tag qui affiche dans la console ou le fichier, un tag passé en paramètre et qui tabule les logs suivant jusqu'à ce que son scope soit terminé.
Exemple :
1 2 3 4
| [Log]Debut de la fonction main
[TAG]--------- Initialisation des variables -------
[LOG] Debut de la fonction d'initialisation
.... |
L'idée est de créer une instance d'une classe C++ via une macro qui grâce à son constructeur augmente une variable statique m_uiNbTabulation de la classe "MyLog" (dont des fonctions sont appelées via DEBUG_LOG) et quand le scope est fini, le destructeur décrémente la variable m_uiNbTabulation de manière automatique.
Du coup ma macro DEBUG_TAG a été définie à la base comme :
#define DEBUG_TAG(fmt , ...) ALog _var##__LINE__(fmt,__VAR_ARGS__);
Seul problème, il peut y avoir plusieurs tag dans un même scope et je ne trouve pas de moyen de créer des variables avec un nom unique via le préprocesseur.
Exemple :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| DEBUG_TAG("Avant le switch");
switch(value)
{
case 1 :
{
DEBUG_TAG("cas 1");
...
}
break ;
case 2 :
{
DEBUG_TAG("cas 2");
...
}
break;
...
} |
Est-ce que quelqu'un a une idée pour générer des noms de variables unique ?
Merci d'avance
Partager