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变量也可以,我这里为了效率考虑。
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变量也可以,我这里为了效率考虑。
相关文章推荐
- C++使用localtime函数需要注意的地方
- C++使用localtime函数需要注意的地方
- C++使用localtime函数需要注意的地方http://blog.csdn.net/shellching/article/details/8114266
- C++使用localtime函数需要注意的地方
- C++使用localtime函数需要注意的地方
- C++(10):VS2015使用某些函数显示不安全需要末尾添加_s的解决办法
- php in_array 函数使用说明与in_array需要注意的地方说明
- C++中使用delete 需要注意的两个问题
- C++ 构造函数使用 ":成员变量(形参)" 的形式给类里面成员变量赋值,如果成员变量和形参是指针,那么需要注意的事项
- c/c++中使用指针需要注意的问题
- 读书笔记 effective c++ Item 6 如果你不想使用编译器自动生成的函数,你需要明确拒绝
- [C/C++标准库]_[初级]_[使用ctype里的isxxx函数时要注意的事项]
- C++ 函数使用总结/编程注意事项
- 使用TransmitFile函数需要注意的几点
- C++学习总结_成员函数的声明和实现需要注意问题
- mongo 对数据很严格 在使用组装条件的时候需要注意 字段的类型, 分享几个转换的函数
- C#的Replace函数,使用函数作为的参数需要注意
- c++的fill函数使用注意点
- [C/C++标准库]_[初级]_[使用ctype里的isxxx函数时要注意的事项]