关于C语言的local time使用

start = time(NULL);

newtime = localtime(&start);

strftime(tmpbuf,128,"Start Time:\nData: %Y-%m-%d Time: %I:%M:%S\n",newtime);

printf (tmpbuf);

不知道为什么一直出现警告
1>d:\my documents\桌面\program0515\dsmcpro.cpp(103) : warning C4996: 'localtime': This function or variable may be unsafe. Consider using localtime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

1> c:\program files\microsoft visual studio 9.0\vc\include\time.inl(114) : 参见“localtime”的声明

c

3个回答

std::localtime返回的指针指向的是某个static对象,是线程不安全的。

微软提供了对应的线程安全的版本: localtime_s。

如果不是多线程环境,一个简单的解决办法可以去掉此警告:

 #pragma warning(disable : 4996)   //在文件头部加上此句

如果对您有帮助,请采纳答案好吗,谢谢!

fight_in_dl
战在春秋 回复sinat_29168845:查msdn,https://msdn.microsoft.com/en-us/library/a442x3ye.aspx里面有示例。
3 年多之前 回复
sinat_29168845
sinat_29168845 回复sinat_29168845: 我把localtime改成了localtime_s,可是显示函数不接受一个参数。
3 年多之前 回复
sinat_29168845
sinat_29168845 回复sinat_29168845: 我想问问怎么用localtime_s呢?
3 年多之前 回复
sinat_29168845
sinat_29168845 谢谢啦
3 年多之前 回复

意思是那个函数是不安全的,推荐使用 localtime_s 安全函数

sinat_29168845
sinat_29168845 谢谢,这个函数怎么用呢?
3 年多之前 回复

警告说的很明白了吗,想用localtime就加上编译选项_CRT_SECURE_NO_WARNINGS。不然就用localtime_s代替

sinat_29168845
sinat_29168845 好的,谢谢啦
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐