Voglio implementare un tracciante di funzione, che dovrebbe tracciare quanto tempo una funzione sta prendendo per eseguire. Ho seguito classe per il medesimo: -C'è un modo per ottenere il nome della funzione all'interno di una funzione C++?
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.
*/
}
Voglio sapere se c'è qualche modo per ottenere il nome della funzione all'interno di una funzione? Fondamentalmente voglio che gli utenti della mia classe semplicemente creino un oggetto allo stesso modo. Non possono passare il nome della funzione.
Funziona in VS2003 ma non funziona in VC6 – Canopus
Che cosa non funziona? Le macro non sono riconosciute dal compilatore o cosa? – sharptooth
Sì. Nella compilazione in VC6, dice __FUNCTION__ come identificatore non dichiarato. Mi manca qualcosa o non è supportato? – Canopus