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

时间:2013-10-11 15:25:31

标签: c++ visual-studio-2012

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

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

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

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

非常感谢:)

5 个答案:

答案 0 :(得分:20)

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

#pragma warning(disable : 4996) //_CRT_SECURE_NO_WARNINGS

答案 1 :(得分:10)

MS编译器将

localtime标记为不安全,因为它返回指向静态分配的struct tm的指针。这显然是一个坏主意。
因此,localtime_s是微软发明的,它指向你分配的struct tmstruct tm timeinfo;
localtime_s(&timeinfo, &rawtime);

使用此(并使您的程序具有Microsoft特定性)或通过定义_CRT_SECURE_NO_WARNINGS来关闭警告。

答案 2 :(得分:5)

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

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

答案 3 :(得分:3)

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

  

/ unsafe(C#编译器选项)

在顶部
在C ++中,visual studio会抱怨它认为是 unsecure 的函数,如果你不想要很多警告,建议你#define _CRT_SECURE_NO_WARNINGS,例如

localtime可能会为您提供以下内容:

  

警告C4996:'localtime':此函数或变量可能不安全。   请考虑使用localtime_s。要禁用弃用,请使用   _CRT_SECURE_NO_WARNINGS。有关详细信息,请参阅在线帮助。

答案 4 :(得分:1)

| Process name | Line of business | Customer | Potential customer | Employee | Vendor | COUNTIF | Process name_2 |
|--------------|------------------|----------|--------------------|----------|--------|---------|----------------|
| Ad campaign  | Marketing        | x        | x                  |          | x      | 3       | Ad campaign    |
| Payroll      | HR               |          |                    | x        | x      | 2       | Ad campaign    |
|              |                  |          |                    |          |        |         | Ad campaign    |
|              |                  |          |                    |          |        |         | Payroll        |
|              |                  |          |                    |          |        |         | Payroll        |