您的位置:首页 > 编程语言 > C语言/C++

C/C++库中使用time.h中函数需要注意

2008-09-03 11:48 381 查看
在一个程序中用了两次localtime去把time_t转换为tm*,结果发现最后两个结果都一样,查看文档发现
Both the 32-bit and 64-bit versions ofgmtime, mktime, mkgmtime, and localtimeall use a single tm structure per thread for the conversion. Each call to one of these routines destroys the result of the previous call。
这些函数都是使用一个tm结构,或者是使用全局变量,或者第一次使用时动态分配,且不去管编译器的实现,但清楚的是,如果想要在同一进程中多次使得这些函数(包括相同函数和不同函数的情况),而且同时用到多个结果,必须手动将这些内容存起来
原来程序为
tm* tsStart = localtime(&ta);
tm* tsEnd = localtime(&tb);
现改为
tm tsStart;
tm* ptsEnd = localtime(&ta);
tsStart = *ptsEnd;
ptsEnd = localtime(&tb);
这里第一次调用localtime时借用了ptsEnd,下次直接还使用编译器内部的变量保存tb 后的结果,如果想更清楚一点,多定义一个tm变量也可以,我这里为了效率考虑。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: