人较笨且记性不好,故记录在此.折叠代码打不开请F5.本博中很多是转载收录其他网友的文章(原文地址请见博文末尾),所有权为原作者所有!!!
此博客已不再更新和维护,欢迎关注我的github新博客

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: :: 管理 ::

错误发生在这几句部分:

struct tm *ltime;
char timestr[16];
ltime=localtime(&header->ts.tv_sec);

错误提示为:

error C2664: “localtime”: 不能将参数 1 从“const long *__w64 ”转换为“const time_t *”

分析:

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

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

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

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

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

这样就可以通用了。

【参考资料 感谢作者】
http://blog.sina.com.cn/s/blog_4a5cd6280100h36z.html 

posted on 2011-07-04 22:30  子坞  阅读(4110)  评论(1编辑  收藏  举报