2010-08-16 173 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