2010-08-16 172 views
0

我在写记录文件。我宁愿在那里使用宏__FUNCTION__。我不喜欢喜欢的方式:宏作为函数参数的默认参数

Logger.write("Message", __FUNCTION__); 

也许,有可能使类似:

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

如果不是,有什么方法可以做到这一点的东西不用手(我的意思传递函数名称)?

回答

4

你可以通过包装这一切在宏做这样的事情:

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

的缺点是,你会使用这个宏时,需要有Logger范围。

2

宏仅通过文本替换工作 - 预处理器将宏定义放入其名称的位置。你不能有像你所建议的那样的“智能”宏。

在标准C++中不支持你想要的东西。

+0

好的。感谢你的回答。请记住这一点。 – Ockonal 2010-08-16 12:53:18