#pragma once
#include "mmsystem.h"
#pragma comment(lib, "winmm.lib")
#ifdef _DEBUG
class CTraceTime
{
public:
    CTraceTime(const wchar_t* tskname)
    {
        m_csTskname = tskname;
        CString sOutput2;
        sOutput2.Format(L"%s :%010d\n", m_csTskname, timeGetTime());
        OutputDebugString(sOutput2);
    }
    ~CTraceTime()
    {
        CString sOutput2;
        sOutput2.Format(L"%s End:%010d\n", m_csTskname, timeGetTime());
        OutputDebugString(sOutput2);
    }
private:
    CString m_csTskname;
};
#define TRACE_TIME(x) CTraceTime(x)
#else
#define TRACE_TIME(x)
#endifusage:
TRACE_TIME(L"test task");
TRACE(L"between task");vs2005编译输出:
test task bgn:xxx
test task end:xxx
between task期望的输出结果应该是:
test task bgn:xxx
between task
test task end:xxx很显然,对象过早析构了,对此我很是不解!
在此寻求答案。