2010-06-17 72 views
2

我需要自動將方法名添加到某些日誌消息。我一直在使用__FUNCTION__這樣做,但它會生成方法的全限定名(namespace :: class:method)。所以它浪費了很多空間,使得日誌的可讀性降低。有什麼方法可以在MACRO中僅附加方法名稱,沒有任何不必要的限定符?在宏中生成方法名稱

回答

1

如果你的日誌代碼如下所示:

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

編寫一個函數,需要一個:

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

然後根據需要,說你可以簡單的寫一個全局函數修剪函數名char *參數並返回一個指向其中的函數名稱的指針。 然後寫

MyFunction(FUNCTION) 

而不是

FUNCTION 

這還具有以下優點,可以動態短期和長期名稱之間切換。