Quiero implementar un rastreador de función, que rastrearía cuánto tiempo tarda una función en ejecutarse. He siguiente clase para el mismo: -¿Hay alguna manera de obtener el nombre de la función dentro de una función de 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.
*/
}
me gustaría saber si hay alguna manera de obtener el nombre de la función desde el interior de una función? Básicamente quiero que los usuarios de mi clase simplemente creen un objeto igual. No pueden pasar el nombre de la función.
Funciona en VS2003 pero no funciona en VC6 – Canopus
¿Qué no funciona? Las macros no son reconocidas por el compilador o qué? – sharptooth
Sí. En la compilación en VC6 dice __FUNCTION__ como identificador no declarado. ¿Me estoy perdiendo algo o no es compatible? – Canopus