fopen警告处理方式

warning C4996: “fopen”被声明为否决的

问题:vs2005中编程时,遇到如下:

warning C4996: “fopen”被声明为否决的。

解释:微软的警告,主要是那些都是C库的函数,很多函数内部是不进行参数检测的(包括越界类的),微软担心使用这些会造成内存异常,所以就改写了一 下同样功能的函数,只不过进行了参数的检测,使用这些新的就可以了。不用特意记,每个函数在给出警告时都会告诉你相应的安全函数,注意一下警告信息就可以了,使用时再 查看一下MSDN。库函数改写例子:

mkdir改写为 _mkdir

fopen”改写为 fopen_s

stricmp改写为 stricmp_s

解决:

1> 根据下面的warning提示:参见“fopen”的声明

消息:“This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.”

所以可以将函数按warning提示的第二句使用fopen_s函数即可:

eg:FILE *pFile=fopen("1.txt", "w");

改为:

FILE* pFile;

fopen_s(&pFile, "1.txt", "w");

2> 还是根据warning提示的地三句话:use _CRT_SECURE_NO_DEPRECATE

项目|属性|配置属性|C/C++|命令行|附加选项,加入【/D

"_CRT_SECURE_NO_DEPRECATE" 】(注:加入中括号中完整的内容)

3> 降低警告级别:项目|属性|配置属性|C/C++|常规,自己根据情况降低

警告级别(此法不推荐)

注:高度重视警告:使用编译器的最高警告级别。应该要求构建是干净利落的(没有警告)。理解所有警告。通过 修改代码而不是降低警告级别来排除警告。

编译器是你的朋友。如果它对某个构造发出警告,这经常是说明你的代码中存在潜在的问题。成功的构建应该是无声无息的(没有警告的)。

fopen警告处理方式,布布扣,bubuko.com

时间: 2024-10-13 23:14:57

fopen警告处理方式的相关文章

fopen中打开方式

r+: Open for reading and writing.  The stream is positioned  at  the beginning of the file. w+:Open for reading and writing.  The file is created  if  it  does not  exist, otherwise it is truncated.  The stream is positioned at the beginning of the f

Python selenium的js扩展实现

python写的数据采集,对一般有规律的页面用 urllib2 + BeautifulSoup + 正则就可以搞定. 但是有些页面的内容是通过js生成,或者通过js跳转的,甚至js中还加入几道混淆机制:对这种涉及页面脚本解析的内容,前面的方式便很无力. 这时我们需要能解析.运行js的引擎——浏览器,而python selenium能提供程序与浏览器的交互接口,再加上phantomjs这个可以后台运行的浏览器,即使用 selenium + phantomjs 便可以解决以上的问题. seleniu

sublime使用sublimelint-luacheck屏蔽指定警告

在成功安装SublimeLinter-lua与luacheck以后,如果没有语法error,则会进行警告提示. 如下图 waring: line contains trailing whitespace. 这样的警告在项目代码里太多了,虽然sublime能够自动去除trailing,但是考虑到其他同事是看不见这些字符, 如果改掉svn里会有大量文件变化,没必要.于是屏蔽掉这些恼人的警告. 在菜单栏--package setting -- SublimeLinter -- setting user

怎么去掉Xcodeproject中的某种类型的警告 Implicit conversion loses integer precision: 'NSInteger' (aka 'long') to 'int32

问题描写叙述 在我们的项目中,通常使用了大量的第三方代码,这些代码可能非常复杂,我们不敢修改他们,但是作者已经停止更新了,当sdk升级或者是编译器升级后,这些遗留的代码可能会出现许很多多的警告,那么我们有没有办法去掉这些烦人的警告,不然一个project几百个警告,你看着怎么都不爽吧.我们怎么去掉警告呢 1.最直接,最一劳永逸,最安全的方式,直接找到警告的那段代码,改为不警告.这个方式,最安全. 但是它有一个问题,就是,当我们非常多文件都有这样的类型的警告的时候,我们就须要修改非常多非常多的源代

怎么去掉Xcode工程中的某种类型的警告 Implicit conversion loses integer precision: 'NSInteger' (aka 'long') to 'int32

在我们的项目中,通常使用了大量的第三方代码,这些代码可能很复杂,我们不敢改动他们,可是作者已经停止更新了,当sdk升级或者是编译器升级后,这些遗留的代码可能会出现许许多多的警告,那么我们有没有办法去掉这些烦人的警告,不然一个工程几百个警告,你看着怎么都不爽吧.我们怎么去掉警告呢 1.最直接,最一劳永逸,最安全的方式,直接找到警告的那段代码,改为不警告.这个方式,最安全. 可是它有一个问题,就是,当我们很多文件都有这种类型的警告的时候,我们就需要改动很多很多的源码了, 对于不是我们写的源码,有可能

20161021_一些基础的东西

1. mysql_num_fields() 返回结果集中字段的数目 如: $result = mysql_query("SELECT id,name,age FROM mydb.tb1 where id < 5"); echo mysql_num_fields($result); //result:3 (id,name,age)三个字段 2. $a = 9; $b = &%a; unset($b); $b = 1; echo $a; //$a = 9//解释如下,这属于传

黑马程序员-java-高新技术中《九》

                   --Java培训.Android培训.iOS培训..Net培训.期待与您交流! -- 一:注解 1.注解(Annotation) 注解相当一个类或接口,每一个注解都是一个实例对象    注解的使用形式:@interface即@注解类名 定义注解类:     @interface A     {-} 使用了"注解类"的类: @A      class B{} 对"使用了注解类的类"进行反射操作: class C {       B

32位平台代码向64位平台移植

1背景描述 从苹果A7处理器开始,就支持着两种不同的指令集:第一种为原有处理器所支持的32-bit ARM指令集,第二种为崭新的64-bit ARM体系结构.这种64-bit体系结构拥有更大的地址空间,最大支持16GB内存,同时它一次性可提取64位数据,比32-bit体系提高了一倍.现如今,苹果的LLVM编译器已经能够充分支持64-bit指令集. 正如苹果A7处理器一样,支持64-bit指令集的处理器已经很普遍了,如AMD公司的AMD-64.Intel公司的EM64T及IA-64.处理器属于硬件

【c基础】之 文件及其操作

文件的打开与关闭 首先要定义一个文件指针类型,格式为 FILE *文件指针名; ; FILE *fp; //fp就是定义的文件指针 ●打开文件fopen()函数,格式: fp = fopen("文件名", "打开方式"); fp = fopen("c:\\myfile", "r"); //打开方式下文会讲到 文件名中不允许直接使用路径描述符 "\",必须用转义字符的形式 "\\".&qu