Je veux implémenter un traceur de fonction, qui tracerait combien de temps une fonction prend pour s'exécuter. Je suit classe pour le même: -Existe-t-il un moyen d'obtenir le nom d'une fonction dans une fonction 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.
*/
}
Je veux savoir s'il y a un moyen d'obtenir le nom de la fonction à l'intérieur d'une fonction? Fondamentalement, je veux que les utilisateurs de ma classe créent simplement un objet identique. Ils ne peuvent pas passer le nom de la fonction.
Son fonctionnement dans VS2003 mais ne fonctionne pas dans VC6 – Canopus
Qu'est-ce qui ne fonctionne pas? Les macros ne sont pas reconnues par le compilateur ou quoi? – sharptooth
Oui. Lors de la compilation dans VC6, il indique __FUNCTION__ comme identifiant non déclaré. Ai-je manqué quelque chose ou n'est-ce pas supporté? – Canopus