当前位置:C++技术网 > 资讯 > 禁止VS警告的方法全面总结图解

禁止VS警告的方法全面总结图解

更新时间:2015-08-14 10:20:30浏览次数:1+次

    我们在开发的过程中,经常会发现一些警告。正如《程序员笑话:我只关心错误》所说的,我们绝大部分程序员都会忽略警告。警告不会影响程序的编译,但是,有些警告是一些隐患的提示,有的则是有点多余。
    不管怎么样,即使我们忽略,我们也需要注意。出现了警告,我们至少要告诉编译器,我知道这个警告了,没有问题,哥就要这么干,编译器大哥你就不要多管闲事了。
    首先说一个万能的禁止警告显示的方法,就是在出现警告的cpp文件开始加入预编译指令,禁用警告,如下:

#pragma warning(disable:XXXX) //禁止提示所有警告
     这一招,很有用。如果你知道出现的这个警告没有任何问题,但是它还是老是显示警告,有的甚至提示大片的警告,都是同一类的,烦不胜烦。那么,这个预编译指令将一次性禁止这类警告了。
    使用方法就是:在VS编译时,底部的输出小窗口会提示:...warning C4244: ...这种信息,就是警告。C4244就是表示错误的代号,我们的预编译指令中的XXXX就是这个代号,只要填入数字代码即可,如#pragma warning(disable:4244) 。这样就药到病除。真的就是哪里有警告就放发哪里,再也不用担心有警告了!VS算个球,还敢警告我!!封你的嘴去。
    典型的,VS会鼓励你使用安全版本的C运行时库函数,比如fopen,推荐使用fopen_s,fopen_s并不是标准的函数哦。它们只是对标准的函数做了封装,对参数进行了一些检查,实际上,经过测试,还是不能够完全防止出问题。也就是说,所谓的安全版函数,只是增加了一些防错手段而已,事实上,还是可能出错,只是出错难度降低了。我们还是要注意使用。
    这种错误的提示如下:
warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\stdio.h(211) : 参见“fopen”的声明
     提示的中文意思就是:警告C4996:'fopen':此函数或者变量可能不安全。请考虑使用fopen_s来代替fopen。强烈不推荐禁止,要禁止可以使用_CRT_SECURE_NO_WARNINGS。请看在线帮助。

    所以,有时候我们就不想看到这些提示,就想直接用标准的函数,那么我们可以禁止这个警告提示。第一种方法就是上面的预编译指令,应该知道怎么用了吧。看清楚这个警告的代号,然后一枪干掉!
    强烈不推荐禁止,是微软的意思,不过我们对此,可以不要理睬,只是他一厢情愿罢了。
    如果你不喜欢以上的预编译指令来禁止,当然也为你介绍直接在VS里面设置一下即可。在VS菜单“项目”->“<项目名称>属性”,然后弹出项目属性设置对话框,见下图所示:

    按照步骤找到:配置属性 -> C/C++ -> 预处理器 -> 预处理器定义 -> 点击选择编辑,弹出预处理器定义对话框,在一个空行中输入_CRT_SECURE_NO_WARNINGS,确定即可。
    或者第三种方法如下图所示:

    在上面弹出的项目属性对话框中,找到:配置属性 -> C/C++ -> 命令行 -> 其他选项 ,在编辑框中输入_CRT_SECURE_NO_WARNINGS,确定即可。
    在项目属性中设置的,会对整个项目生效哦。
    总结一下,禁止警告,一共有三种方法,第一种方法就是直接使用预编译指令完成,简单方便。你要禁止哪个警告,就要在它所在的头文件或源文件(cpp文件)放一个禁止警告的预编译指令。这个方法使用灵活,但是作用范围与你放置的地方相关有效。第二种方法就是在路径【配置属性 -> C/C++ -> 预处理器 -> 预处理器定义】去手动添加。第三种就是直接添加到【配置属性 -> C/C++ -> 命令行 -> 其他选项】。添加的内容就是_CRT_SECURE_NO_WARNINGS。第二第三种方法都是项目全局有效的。只要是项目里的都会起作用。