C++: C4996报错

我的博客:竹山听雨

文章目录

  • C++: C4996报错
    • 问题描述
    • 问题出现原因
    • 解决方法
      • 使用安全的函数
      • 添加宏
      • 添加#define EXAMPLE_MACRO_NAME
      • 添加#pragma warning(disable:4996)
    • 结语

问题描述

  • 环境:V2019
  • 语言:C++
    还是在完成学校作业的时候(ps:好像原来也遇到过很多次了),在VS201x编译器上,使用scanf(),strcpy()等,都会出现这个问题。

    严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C4996 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

问题出现原因

创建项目时,会有一个勾选项,叫做"安全开发生命周期(SDL)检查",为了更好的监管开发者的代码安全,如果勾选,他将严格按照SDL的规则编译代码,因此一些常用的函数,如scanf等就会报错C4996

解决方法

使用安全的函数

scanf()改为scanf_s().strcpy()改为strcpy_s()等。这个方法适合长期解决问题,因为scanf等函数的确会对程序造成一些不良影响,但是有些安全函数,如:strcpy_sstrcpy原版函数的参数好像不同,对初学者,仅仅是做一个demo来说,可能会有新的bug

添加宏

选择项目——>xxxx(你的项目名称)属性——>C++——>预处理器——>预处理器定义

在定义后面添加_CRT_NONSTDC_NO_DEPRECATE_CRT_SECURE_NO_WARNINGS

保存重新编译即可

**注意:**要记得每个定义后面要以;隔开


这样的方法在本项目中,都会忽略这些报错,但是可能会有些麻烦

添加#define EXAMPLE_MACRO_NAME

若要仅在特定源文件中定义的宏,请添加一个行如#define EXAMPLE_MACRO_NAME包含的头文件的任意行之前

可能有些时候这个方法没用,暂时不清楚原因

添加#pragma warning(disable:4996)

这个可能是最简单粗暴的解决方法,直接忽略掉C4996这个报错

在文件首添加#pragma warning(disable:4996)即可,但是也仅对当前源文件有效

结语

若有哪里不对,敬请大佬指正

随笔杂记(十)——C++:C4996报错解决方法相关推荐

  1. 高翔视觉SLAM十四讲(第二版)各种软件、库安装的以及报错解决方法

    目录 前言 系统版本 下载高翔视觉SLAM十四讲第二版的源代码 一.安装 Vim 二.安装 g++ 三.安装 KDevelop 以及汉化 1.安装 2.汉化 四.安装 Eigen 库 五.安装 Pan ...

  2. Jenkins安装插件报错解决方法

    Jenkins安装插件报错解决方法 1.报错场景 2.场景分析 3.问题解决(不一定能全解决,看运气) 1.报错场景 按正常方式安装完Jenkins后安装插件会报错如下: // An highligh ...

  3. ThinkPad安装deepin操作系统报错解决方法

    ThinkPad安装deepin操作系统报错解决方法 参考文章: (1)ThinkPad安装deepin操作系统报错解决方法 (2)https://www.cnblogs.com/haihua85/p ...

  4. hive导出数据到本地文件报错解决方法

    hive导出数据到本地文件报错解决方法 参考文章: (1)hive导出数据到本地文件报错解决方法 (2)https://www.cnblogs.com/yaopeiyun/p/12232251.htm ...

  5. Failed to resolve: com.android.support:appcompat-v7:27.+ 报错解决方法

    Failed to resolve: com.android.support:appcompat-v7:27.+ 报错解决方法 参考文章: (1)Failed to resolve: com.andr ...

  6. AndroidStudio EventBus报错解决方法its super classes have no public methods with the @Subscribe

    AndroidStudio EventBus报错解决方法its super classes have no public methods with the @Subscribe 参考文章: (1)An ...

  7. @Data注解使用后get set报错解决方法

    @Data注解使用后get set报错解决方法 参考文章: (1)@Data注解使用后get set报错解决方法 (2)https://www.cnblogs.com/lijinshan950823/ ...

  8. 【PaddlePaddle系列】报错解决方法合集 (不定时更新)

    [PaddlePaddle系列]报错解决方法合集 (不定时更新) 参考文章: (1)[PaddlePaddle系列]报错解决方法合集 (不定时更新) (2)https://www.cnblogs.co ...

  9. vue 项目初始化时,npm run dev报错解决方法

    vue 项目初始化时,npm run dev报错解决方法 参考文章: (1)vue 项目初始化时,npm run dev报错解决方法 (2)https://www.cnblogs.com/ruilin ...

最新文章

  1. hashmap是线程安全的吗?怎么解决?_解决SimpleDateFormat线程安全问题
  2. iOS 中strong,weak,copy,assign区别
  3. PHP45个方便的工具
  4. kotlin学习笔记——重载操作符
  5. (一)html5中的新增元素和废除元素
  6. ASP.NET MVC 2.0
  7. EJB3.0学习笔记---Bean实现多个接口的情况下定义,访问方式:
  8. Nginx(6)-配置基于域名的虚拟主机
  9. 深入分析Android Binder 驱动
  10. php 微信登录 扫码 h5,【小程序】WeAuth微信小程序实现PC网站扫码授权登录
  11. 佳能打印机 Cannon G2810 维护修复方法
  12. chrome浏览器设置思源黑体
  13. uva 10105(数论)
  14. UML类图和用例图练习
  15. 【POJ 2484】A Funny Game(对称博弈)
  16. 为什么现在90后员工离职率那么高?
  17. QIIME 2教程. 11元数据Metadata(2021.2)
  18. UVA - 489 Hangman Judge 刘汝佳紫书题单(算法竞赛入门经典)
  19. java物流管理系统_java web物流管理系统
  20. UE4查看材质在android设备上的性能开销

热门文章

  1. PyCrypto安装和使用示例
  2. mycat原理及分表分库入门
  3. 大一新生必会的c语言五子棋!PVP,PVE,EVE模式都有,还有智能的AI部分,复盘等内容!一看就会的五子棋教程,确定不来看看吗?
  4. 【读论文】Character-Level Language Modeling with Deeper Self-Attention(Vanilla Transformer)
  5. Security:osquery 介绍
  6. yolo v4 weights 权重
  7. android socket通讯
  8. Zookeeper 服务器端和客户端扩大节点数据1M大小限制
  9. ROS(Robot Operating SysTerm) 系统
  10. 第4章 安装CentOS 5.x与多重引导小技巧