語境
我書面方式調試類Qt中的一個項目,我想知道在哪個班,我所以現在我寫:獲取類的名字調用函數
MyClass::function1()
{
DEBUG_IN("[MyClass] Enters function1()")
....do something
DEBUG_OUT("[MyClass] Exits function1()");
}
編輯:DEBUG_IN()
和DEBUG_OUT()
是全局函數。他們不是MyClass類的一部分
問題
是否有可能獲得其中DEBUG()被調用的類的名字嗎?
(何DEBUG()被調用函數的bame?)
,這樣我可以只是做:
MyClass::function1()
{
DEBUG_IN("function1()")
....do something
DEBUG_OUT("function1()");
}
和
DEBUG_IN(QString text)
{
qDebug() << qPrintable("[")
<< qPrintable(getClassName())
<< qPrintable("] Enters ")
<< qPrintable(text);
}
THX很多
試試看http://stackoverflow.com/questions/1666802/is-there-a-class-macro-in-c。如果您不熟悉宏觀擴展如何工作,我可以嘗試爲您澄清。 – Qartar
@qartar:您給了我與其他兩個命題相同的答案,但是我的DEBUG()不是MyClass的一部分(我剛剛編輯了這個問題,因爲它不夠清楚) – ochurlaud
您可以將擴展的宏直接傳遞給功能。例如'DEBUG_IN(__ PRETTY_FUNCTION__,...)' – Qartar