10

我在视觉工作室遇到问题。我尝试使用“time.h”中的本地时间函数。

Visual Studio 告诉我这是一个不安全的功能。但是,我已经将这个用于我的学校练习。我看到您可以通过进入项目属性、构建选项卡并选中“启用不安全代码”来禁用此不安全错误。

不过,我没有构建选项卡,如您所见: http: //puu.sh/4NkYC.png

我正在使用 Windows 7 和 Visual Studio 2012 Ultimate。看起来“构建选项卡”和“启用不安全代码”已经消失了:/也许你知道如何解决这个问题?

多谢 :)

4

5 回答 5

31

您可以使用以下指令关闭警告:

#pragma warning(disable : 4996) //_CRT_SECURE_NO_WARNINGS
于 2016-04-09T19:28:48.763 回答
15

localtime被 MS 编译器标记为不安全,因为它返回一个指向静态分配的指针struct tm。这显然是个坏主意。
因此,localtime_s它是由 Microsoft 发明的,它采用指向struct tm您分配的指针使用 this(并使您的程序是 Microsoft 特定的)或通过定义.
struct tm timeinfo;
localtime_s(&timeinfo, &rawtime);

_CRT_SECURE_NO_WARNINGS

于 2013-10-11T15:49:15.610 回答
13

Visual Studio (VS) 编译器给出此错误。摆脱这个问题很简单。

  1. 转到您的 VS 上下文菜单Project>Properties
  2. 单击配置>属性>C/C++>预处理器
  3. 编辑预处理器定义并添加_CRT_SECURE_NO_WARNINGS最后一个空行。

此编译警告将消失。

于 2015-09-12T09:59:36.103 回答
4

unsafe是 C# 而非 C++ 的一部分。例如这些文档清楚地说

/unsafe(C# 编译器选项)

在顶部
在 C++ 中,Visual Studio 会抱怨它认为不安全#define _CRT_SECURE_NO_WARNINGS的函数,并在您不想要大量警告时向您建议,例如

localtime可能会给你以下:

警告 C4996:“本地时间”:此函数或变量可能不安全。考虑改用 localtime_s。要禁用弃用,请使用 _CRT_SECURE_NO_WARNINGS。详细信息请参见在线帮助。

于 2013-10-11T15:32:57.877 回答
3
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
char counter_str[10];

int main()
{ 
  time_t my_time = time(NULL)// declaring argument of time();
  sprintf(counter_str,ctime(&my_time));//fetch current time
  printf(counter_str);

}
于 2019-12-13T23:02:38.183 回答