还是VC6到C2005的问题

来源:百度知道 编辑:UC知道 时间:2024/06/18 01:25:38
time_t Time;
time( &Time );
strncpy(strTime, ::ctime(&Time),bytes_strTime);
strTime[bytes_strTime] = NULL;//set null character

fprintf(m_fp,"[%s] %s\n",strTime,buffer);

}

//------------------------------------------------------------------//
//
//------------------------------------------------------------------//
char* CTerraBillingCtrl_LogCtrl::GetYESNOstring(BOOL bYESorNO)
{
static char* pYESstring = "yes";
static char* pNOstring = "no";

if(TRUE == bYESorNO) return pYESstring;
return pNOstring;
}

//------------------------------------------------------------------//
//
//------------------------------------------------------------------//
inline BOOL CTerraBillingCtrl_LogCtrl::OpenFile(void)
{
struct tm* date_tm;
long Time;

time(&Time);
date_tm = localtime(&Time);

现在出错的是 lo

VC6.0里,time_t的定义是:
typedef long time_t; /* time value */
其实也就是long,所以可以通用。

但在VS2008中,不一样了:
如何没有定义_USE_32BIT_TIME_T时
typedef __time64_t time_t; /* time value */
typedef __int64 __time64_t; /* 64-bit time value */
也就是说time_t是64位整型的。

在项目属性的"C/C++"中的“预处理定义”中加上_USE_32BIT_TIME_T就可以直接使用
long Time;


当然最好把你的代码改为:
struct tm* date_tm;
time_t Time;

time(&Time);
date_tm = localtime(&Time);

这样就可以通用了。

没错啊。

long Time;

改为

time_t Time;