GetLocalTm的定义为:
ATLTIME_INLINE struct tm* CTime::GetLocalTm(struct tm* ptm) const
{
#if _SECURE_ATL
// Ensure ptm is valid
ATLENSURE( ptm != NULL ); if (ptm != NULL)
{。

那么在下面的使用中:cTm.GetLocalTm(xxxxxxxx);中参数应该怎么写?
struct tm* my_localtime(const time_t * timer)
{
#ifdef _WIN32_WCE
CTime cTm(*timer);
struct tm* pTm = cTm.GetLocalTm(  ); 
return pTm;
#else
return _localtime(timer);
#endif
}
自己定义一个struct tm ttm
然后参数写成cTm.GetLocalTm(&ttm);这样行吗?

解决方案 »

  1.   

    ptm参数是个返回值。因此:
    CTime cTm(*timer);
    tm rtm;
    tm *pTm = cTm.GetLocalTm(&rtm);
      

  2.   

    CTime::GetLocalTmstruct tm* GetLocalTm( struct tm* ptm = NULL ) const;返回值:
    返回一个指向已填好的struct tm的指针,struct tm是在包含文件TIME.H中定义的。关于该结构的成员安排,参见GetGmtTm。参数: ptm 指向一个将用来接收实际数据的缓冲区。如果这个指针是NULL,则使用一个内部的、静态分配的缓冲区。调用其它的CTime成员函数将导致此缓冲区中数据被改写。  说明:
    此成员函数用来获取一个包含此CTime对象的分解后的各个成分的struct tm。GetLocalTm返回本地数据。
      

  3.   

    CTime t(1999, 3, 19, 22, 15, 0); // 10:15PM March 19, 1999
    tm osTime;  // A structure containing time elements.
    t.GetLocalTm(&osTime);
    ATLASSERT(osTime.tm_mon == 2); // Note zero-based month!   
    ==这是msdn中的例子。
      

  4.   

    CTime tm1=CTime::GetCurrentTime();
    tm stTM;
    tm1.GetLocalTm(&stTM);
      

  5.   

    没错,可以。
    其实很多函数都是定义成这样。你通过参数和返回值都可以得到相同的值。
    比如一些字符串的转换函数,它的返回值一般都是char*,其实和一些返回参数的作用是一样的。
      

  6.   

    如果用NULL 可以在输出窗口将错误排除 但是能够实现预定的功能吗?
      

  7.   

    楼主查查msdn,里面说的很清楚呀,为NULL也是合法的,直接通过返回值得到!
      

  8.   


    是tm *pTm = cTm.GetLocalTm( NULL );