C++ 此函数或变量可能是不安全的visual studio
我在visual studio上遇到了一个问题。 我尝试使用“time.h”中的localtime函数 VisualStudio告诉我这是一个不安全的函数。然而,我不得不把这个用于我的学校练习。我看到您可以通过进入项目属性、构建选项卡并选中“启用不安全代码”来禁用此不安全错误 尽管如此,我没有“构建”选项卡,如您所见: 我正在使用windows 7和visual studio 2012 Ultimate。看起来“构建选项卡”和“启用不安全代码”已消失:/ 也许你知道怎么解决这个问题C++ 此函数或变量可能是不安全的visual studio,c++,visual-studio-2012,C++,Visual Studio 2012,我在visual studio上遇到了一个问题。 我尝试使用“time.h”中的localtime函数 VisualStudio告诉我这是一个不安全的函数。然而,我不得不把这个用于我的学校练习。我看到您可以通过进入项目属性、构建选项卡并选中“启用不安全代码”来禁用此不安全错误 尽管如此,我没有“构建”选项卡,如您所见: 我正在使用windows 7和visual studio 2012 Ultimate。看起来“构建选项卡”和“启用不安全代码”已消失:/ 也许你知道怎么解决这个问题 谢谢:(
谢谢:(
<代码>不安全< /COD> >是C不C++的一部分。例如,这些明确表示
/不安全(C#编译器选项) 在顶端在C++中,VisualStudio会抱怨它不安全的功能,建议您<代码>定义“CRTYSSECURIONNOI警告”<代码>,如果您不需要很多警告,例如
localtime
可能会为您提供以下信息:
警告C4996:“localtime”:此函数或变量可能不安全。
考虑使用LoalTimeTys代替。要禁用弃用,请使用
_CRT\u安全\u无警告。有关详细信息,请参阅联机帮助
localtime
被MS编译器标记为不安全,因为它返回指向静态分配的struct tm
的指针。这显然是个坏主意。因此,
localtime\u s
是由Microsoft发明的,它使用指向您分配的struct tm
的指针struct tm timeinfo
本地时间(时间信息和原始时间)代码>
使用此选项(并使您的程序特定于Microsoft)或通过定义\u CRT\u SECURE\u NO\u警告来关闭警告
Visual Studio(VS)编译器会给出此错误。解决这个问题很简单
转到VS上下文菜单项目>属性
单击配置属性C/C++>预处理器
编辑预处理器定义并在最后一行空行添加_CRT\u SECURE\u NO\u警告李>
此编译警告将消失。您可以使用以下指令关闭警告:
#pragma warning(disable : 4996) //_CRT_SECURE_NO_WARNINGS
\define\u CRT\u SECURE\u NO\u警告
#包括
#包括
#包括
字符计数器_str[10];
int main()
{
time\u t my\u time=time(NULL)//声明time()的参数;
sprintf(counter_str,ctime(&my_time));//获取当前时间
printf(柜台);
}
您想到的是C#的不安全
关键字,这是完全不同的。@SLaks-什么是可移植的localtime
的“安全”变体?这可能会回答这个问题,最好对提供的代码进行一些简短的解释或描述。#定义#CRT\u SECURE\u NO\u警告
#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);
}