2010-08-16 4 views
0

J'écris un fichier journal. Je préfère utiliser les macros __FUNCTION__ là. Je n'aime pas la façon comme:Macros en tant que paramètres par défaut pour l'argument de la fonction

Logger.write("Message", __FUNCTION__); 

Peut-être, il est possible de faire quelque chose comme:

void write(const string &message, string functionName = __FUNCTION__) 
{ 
    // ... 
} 

Sinon, y at-il des façons de faire ce genre de choses non par les mains (je veux dire en passant nom de la fonction)?

Répondre

4

Vous pourriez faire quelque chose comme ça en l'enveloppant le tout dans une macro:

#define log(msg) Logger.write(msg, __FUNCTION__) 

L'inconvénient est que vous aurez besoin d'avoir une portée Logger lors de l'utilisation de cette macro.

2

Les macros fonctionnent uniquement par substitution de texte - le préprocesseur met la définition de la macro à la place de son nom. Vous ne pouvez pas avoir de macros "intelligentes" comme celle que vous suggérez.

Il n'y a pas de support pour ce que vous voulez en C++ standard.

+0

OK. Merci d'avoir répondu. Je m'en souviendrai. – Ockonal

Questions connexes