此功能或变量可能是不安全的Visual Studio

Que*_*nRM 6 c++ visual-studio-2012

我在visual studio上遇到了问题.我尝试使用"time.h"中的localtime函数.

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

不过,我没有构建选项卡,你可以在那里看到:http: //puu.sh/4NkYC.png

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

非常感谢 :)

And*_*yWD 24

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

#pragma warning(disable : 4996) //_CRT_SECURE_NO_WARNINGS
Run Code Online (Sandbox Code Playgroud)


Hen*_*nno 12

localtimeMS编译器标记为不安全,因为它返回一个指向静态分配的指针struct tm.这显然是个坏主意.
因此,localtime_s由Microsoft发明,它指向struct tm您分配的指针使用此指针(并使您的程序具有Microsoft特定性)或通过定义来关闭警告.
struct tm timeinfo;
localtime_s(&timeinfo, &rawtime);

_CRT_SECURE_NO_WARNINGS


Umu*_* D. 8

Visual Studio(VS)编译器提供此错误.摆脱这个问题很简单.

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

此编译警告将消失.


doc*_*ove 4

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

/unsafe(C# 编译器选项)

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

localtime可能会给你以下信息:

警告 C4996:“localtime”:此函数或变量可能不安全。考虑使用 localtime_s 代替。要禁用弃用,请使用 _CRT_SECURE_NO_WARNINGS。详情请参见在线帮助。