vs关于_CRT_SECURE_NO_WARNINGS警告说明

在VS中调用 strcpy、strcat 等函数时会提示 _CRT_SECURE_NO_WARNINGS 警告,原因是这些函数不安全,可能会造成内存泄露等。比如:

  1: #include <stdio.h>
  2: #include <stdlib.h>
  3: #include <string.h>
  4:
  5: int main(void)
  6: {
  7:     char buf[1024];
  8:     sprintf(buf, "%s", "abc");
  9:     return 0;
 10: }
编译时报错如下:
  1: error C4996:‘ sprintf": This function or variable may be unsafe. Consider using sprintf s instead. To disable deprecation, use(CRT_SECURE_NO_WARNINGS] See online help for details.

所以建议采用带_s的函数,如strcpy_s,calloc_s。

当然,如果执意使用老版本、非安全版本函数,可以使用 _CRT_SECURE_NO_WARNINGS 标记来忽略这些警告问题。

方法一:

在写代码的前面加上如下宏定义:

#define  _CRT_SECURE_NO_WARNINGS 

方法二:

操作 vs 中,在项目 -> 属性 -> C/C++ -> 预处理器 -> 预处理器定中添加 _CRT_SECURE_NO_WARNINGS 这个预定义。

原文地址:https://www.cnblogs.com/thewaytotheway/p/10036206.html

时间: 2024-10-27 11:00:15

vs关于_CRT_SECURE_NO_WARNINGS警告说明的相关文章

VS关于 _CRT_SECURE_NO_WARNINGS 警告说明

在VS中调用 strcpy.strcat 等函数时会提示 _CRT_SECURE_NO_WARNINGS 警告,原因是这些函数不安全,可能会造成内存泄露等. 所以建议采用带_s的函数,如strcpy_s,calloc_s. 当然,如果执意使用老版本.非安全版本函数,可以使用 _CRT_SECURE_NO_WARNINGS 标记来忽略这些警告问题. 方法一: 在写代码的前面加上如下宏定义: #define _CRT_SECURE_NO_WARNINGS 方法二: 操作 vs 中,在项目 -> 属性

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

一.问题的起因 六月下旬,老师布置了有关图形学的课设,于是我将我在VS2013中写好的代码进行编译,结果得到了以下信息: 二.解决方法 1,按照英文提示,我先将fopen改成了fopen_s后,发现错误比原来还多,于是请教了朋友,他说加有关 _CRT_SECURE_NO_WARNINGS 的宏定义 于是可以尝试在程序的前面加上如下宏定义: #define _CRT_SECURE_NO_WARNINGS #include "stdafx.h" #include<Windows.h&

VS中设置#define _CRT_SECURE_NO_WARNINGS的两种方式

1.我们在编译老的用C语言的开源项目如lua源包的时候,可能因为一些老的.c文件使用了strcpy,scanf等不安全的函数,而报警告和错误,而导致无法编译通过. 2.此时我们有两种解决方案: a.在指定的源文件的开头定义:#define _CRT_SECURE_NO_WARNINGS  (只会在该文件里起作用) b.在项目属性里设置,这会在整个项目里生效,依次选择:属性->配置属性->C/C++ ->预处理器->预处理器定义->编辑 最下面加上一行:_CRT_SECURE_

_CRT_SECURE_NO_WARNINGS

在编程的过程中我们常常会遇到一些过时或者不安全的函数 举一个简单的例子: 很多带"_s"后缀的函数是为了让原版函数更安全,传入一个和参数有关的大小值,避免引用到不存在的元素,因为有时候黑客可以利用原版的不安全性黑掉系统. 而往往大家会觉得麻烦,如果不想用新的安全函数,这里提供两种简单的方法供大家参考: 1.使用提示中的_CRT_SECURE_NO_WARNINGS来禁止此类警告 在头文件前定义宏:#define _CRT_SECURE_NO_WARNINGS 上面的例子就可修改为: #

在VS2013 使用C语言库函数,出现出现错误,提示使用不安全函数use _CRT_SECURE_NO_WARNINGS

在VS 2013 中编译 C 语言项目,如果使用了 scanf 函数,编译时便会提示如下错误: error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 原因是Visual C++ 2012 使用了更加安

【C】将m~n之间的素数输出与VS2005以上版本对C语言的scanf的警告warning C4996

素数也叫质数,就是在大于1的自然数中,除了1和此整数自身外,不能被其他不包括0的自然数所整除的数, 需要注意的是,判断一个自然数n是否为质数,无须从1-n检验是否都能与此数整数,只需要用少于等于根号n的所有素数与此数试除即可,这样,每个数的检验的时间复杂度,足足减少了一半. C语言的实现代码如下: #include<stdio.h> #include<math.h> void main(){ int m,n; printf("输出从m到n的素数:\n"); pr

去掉VC++2005 2008的安全警告提示

将过去的工程用VS2005打开的时候.你有可能会遇到一大堆的警告:warning C4996.比如:warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. 原因是Visual C++ 2005使用了更加安全的run-time library rou

MySQL 警告WARN: Establishing SSL connection without server&#39;s identity verification is not recommended.解决办法

Success loading Mysql Driver!Mon Apr 04 15:43:00 CST 2016 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by d

spring+mybati java config配置引起的bean相互引用日志报警告问题

摘要: Error creating bean with name 'XXX': Requested bean is currently in creation: Is there an unresolvable circular reference?; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: 如果把MapperScan单独配置,就不会有警告 报循环引用警告的配