मैं एक फ़ंक्शन ट्रेसर को कार्यान्वित करना चाहता हूं, जो यह पता लगाएगा कि फ़ंक्शन निष्पादित करने में कितना समय लगता है। मैं उसी के लिए वर्ग निम्नलिखित हैं: -क्या सी ++ फ़ंक्शन के अंदर फ़ंक्शन नाम प्राप्त करने का कोई तरीका है?
class FuncTracer
{
public:
FuncTracer(LPCTSTR strFuncName_in)
{
m_strFuncName[0] = _T('\0');
if(strFuncName_in ||
_T('\0') != strFuncName_in[0])
{
_tcscpy(m_strFuncName,strFuncName_in);
TCHAR strLog[MAX_PATH];
_stprintf(strLog,_T("Entering Func:- <%s>"),m_strFuncName);
LOG(strLog)
m_dwEnterTime = GetTickCount();
}
}
~FuncTracer()
{
TCHAR strLog[MAX_PATH];
_stprintf(strLog,_T("Leaving Func:- <%s>, Time inside the func <%d> ms"),m_strFuncName, GetTickCount()-m_dwEnterTime);
LOG(strLog)
}
private:
TCHAR m_strFuncName[MAX_PATH];
DWORD m_dwEnterTime;
};
void TestClass::TestFunction()
{
// I want to avoid writing the function name maually..
// Is there any macro (__LINE__)or some other way to
// get the function name inside a function ??
FuncTracer(_T("TestClass::TestFunction"));
/*
* Rest of the function code.
*/
}
मैं अगर वहाँ किसी भी तरह से एक समारोह के अंदर से समारोह के नाम पर प्राप्त करने के लिए है जानना चाहते हैं? असल में मैं चाहता हूं कि मेरी कक्षा के उपयोगकर्ता बस एक वस्तु बना सकें। वे फ़ंक्शन नाम पास नहीं कर सकते हैं।
यह वीएस2003 में काम कर रहा है लेकिन वीसी 6 – Canopus
में काम नहीं करता है क्या काम नहीं कर रहा है? मैक्रोज़ संकलक द्वारा मान्यता प्राप्त नहीं हैं या क्या? – sharptooth
हां। वीसी 6 में संकलन पर यह __FUNCTION__ को अविकसित पहचानकर्ता के रूप में कहता है। क्या मुझे कुछ याद आ रहा है या क्या यह समर्थित नहीं है? – Canopus