警告C4482和C4996产生原因及解决方法.docx_第1页
警告C4482和C4996产生原因及解决方法.docx_第2页
警告C4482和C4996产生原因及解决方法.docx_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

警告C4482和C4996产生原因及解决方法SUNNY.Man一C4482的产生及解决方法最近正做一个CE下的文件操作项目,为了打开文件方便把几个常用的API封装到了一起,为了便于记忆使用,定义了一个如下的ENUM:Enum CEFileOperate OpenForCreate=0,/打开文件,不管存在与否全部重新创建空白文件。 OpenForExist =1,/打开文件,文件存在打开,不存在创建空白文件。 OpenForRead =2,/打开文件,存在打开,否则出错 OpenForAppend=3,/打开文件,存在打开并移动到最后,不存在创建一空白文件。;在以后的OpenFile(CEFileOperate fo)中使用,结果在编译的时候出现了一个警告,XXX.h(54) : warning C4482: nonstandard extension used: enum CCEFile: CEFileOperate: OpenForCreateused in qualified name。上百度搜索后在MSDN上找到了解决的方法如下。Compiler Warning (level 1) C4482Error Message nonstandard extension used: enum enum used in qualified nameWhen you refer to an enum inside a type, you do not need to specify the name of the enum.For more information on CLR enums, see enum class. For more information about native enums, see C+ Enumeration Declarations.ExampleThe following sample generates C4482./ C4482.cpp/ compile with: /c /W1struct S enum E a ;int i = S:E:a; / C4482int j = S:a; / OK出现这个警告的主要原因就是在引用类里定义的ENUM里,不需要写上Enum的名字,直接用类引用就可以。改成CCEFile: OpenForCreate后,发现所有的警告果然消失。二C4482的产生及解决方法 从VC6升为VS2005后默认情况下,不再使用char而改使用WCHAR,在使用以前写好的类里经常为出现warning C4996: wcsncpy was declared deprecatedMessage: This function or variable may be unsafe. Consider using wcsncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.的警告。是微软公司编译器与头文件导致的问题。因为微软公司不推荐用户使用这些函数,但实际上这些函数本身是没问题的,而且简化了需要的参数,只是使用时要求程序员要把握好它们的特性,以免写出不够安全与健壮的程序。根据MSDN的提示,我知道旧版本的wcsncpy应该用instead来代替,可是在我的源文件中,根本就没用到这个函数,一跟踪才发现是原来版本的MS的文件。解决方法有三:1. 用新版本的开发工具完全替代旧版本的开发工具进行开发。2. 在项目的stdafx.h中寻找#pragma once语句,在它的后面加入如下所示的宏定义 : #define _CRT_SECURE_NO_DEPRECATE3. 在项目的stdafx.h中寻找#pragma once语句,在它的后面加入如下所示的编译控制语句 : #pragma

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论