还是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
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;