• 解决VS2015中出现类似于error C4996: 'scanf': This function or variable may be unsafe的安全检查错误


      用习惯了VS老版本的人当刚使用VS2013的时候可能总遇到类似于这样的错误:

        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++ 2015 使用了更加安全的 run-time library routines 。新的Security CRT functions(就是那些带有“_s”后缀的函数)

        这个问题一般使用以下几种解决办法:

    (1)scanf等类似的函数已经不太安全,要想保证程序的安全性,建议以后采用_s结尾的安全版本,但是很多以前的程序可能还是使用不安全的版本,那么下面给出去掉这种错误提示的几种办法。

    (2)在VS中新建项目的时候去掉“安全开发生命周期(SDL)检查”即可将错误转变成警告,使得使用不安全版本也不影响编译和运行,如下图所示。

     

    (3)在头文件包含的最前面,记住是最前面(在include的前面)加上:#define _CRT_SECURE_NO_WARNINGS这个宏定义即可,如下图所示。

    (4)在编译的头文件最前面加上:#pragma warning( disable : 4996)即可,类似于上图,此处不再附图。

    (5)通过以下步骤Project properties->Configuration Properties->C/C++->Preprocessor->Preprocessor Definitions进入到预处理的定义中,点击按钮 (...),输入:_CRT_SECURE_NO_WARNINGS,使用 " " 相隔即可。

        总之,如果想完全不做安全检查,就使用(2)中的方法或者(5)中的方法,如果只是对某些文件不使用,可以使用(3)和(4)中的方法,个人喜欢使用(2)中的方法,大家可以根据按需选择,不过随着安全性的重要程度在逐步提高,还是建议大家以后使用安全版本。

  • 相关阅读:
    设计模式之中介者模式
    解释器模式(行为模式)
    进程池Pool
    Process子类
    multiprocessing
    random
    re
    time和datetime
    logging 日志
    hashlib
  • 原文地址:https://www.cnblogs.com/everydaykeepgoing/p/6783137.html
Copyright © 2020-2023  润新知