前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VS下关于 _CRT_SECURE_NO_WARNINGS 问题的分析与解决

VS下关于 _CRT_SECURE_NO_WARNINGS 问题的分析与解决

作者头像
Zoctopus
发布2018-06-04 11:08:29
6K0
发布2018-06-04 11:08:29
举报

一、问题的起因

六月下旬,老师布置了有关图形学的课设,于是我将我在VS2013中写好的代码进行编译,结果得到了以下信息:

二、解决方法

1,按照英文提示,我先将fopen改成了fopen_s后,发现错误比原来还多,于是请教了朋友,他说加有关 _CRT_SECURE_NO_WARNINGS 的宏定义

于是可以尝试在程序的前面加上如下宏定义:

#define _CRT_SECURE_NO_WARNINGS
#include "stdafx.h"
#include<Windows.h>

或者在项目(Project) -> 属性(Properties) -> C/C++ -> 预处理器(Preprocessor) -> 预处理器定中添加 _CRT_SECURE_NO_WARNINGS 这个预定义,然后点击确定即可:

小结:在VS中调用 scanf、fopen 等函数时会提示 _CRT_SECURE_NO_WARNINGS 警告,原因是这些函数不安全,可能会造成内存泄露等,所以编译器会建议采用带_s的函数。当然如果执意不加_s,那么就需要使用 _CRT_SECURE_NO_WARNINGS 标记来忽略这些警告问题。

2,关闭安全开发生命周期检查(SDL)

 项目属性 -> 配置属性 -> C/C++ -> SDL检查,选择关闭。

小结:“安全开发生命周期(SDL)检查”,是为了能更好的监管开发者的代码安全,如果勾选上这一项,那么它将严格按照SDL的规则编译代码,所以会出现一些以前可以编译通过的代码现在却编译不了的现象,使用SDL的优点是方便了开发者使用和增强了程序的健壮性和可靠性,但同时也对在老版本或者低版本编译器上运行的程序会出现兼容性的问题。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-07-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、问题的起因
  • 二、解决方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档