照搬代码,还是会出现一些小的问题,主要是由于环境引起的问题
问题一:error C4703: 使用了可能未初始化的本地指针变量“xxx”
以下问题转自https://blog.csdn.net/sinat_20265495/article/details/62056034
问题分析:
在VS2013创建项目时,会有一个勾选项,叫做“安全开发生命周期(SDL)检查”,这个东西是微软在VS2013新推出的东西,为了是能更好的监管开发者的代码安全,如果勾选上这一项,那么他将严格按照SDL的规则编译代码,会有一些以前常用的函数无法通过编译,比如在VS2010中的scanf是warning那么在VS2013中就是error了。
查看MSDN中对SDL的描述,SDL检查会视以下告警为错误:
也就是在编译的时候,当SDL检查启用时,编译器会严格检测缓冲区的溢出,并且会在delete某个指针时,自动为这个指针定义一个非有效的值,防止在delete以后仍用到这个指针时出错。还有就是会在你定义一个对象时,自动为这个对象赋值零。
从这些功能来看,有些功能还是不错的,不但方便了程序员使用也增强了程序的健壮性,但是对老版本程序的兼容就会出现问题,以前程序中编译通过的内容也许在VS2013中就没有办法通过。
解决方法:
有一个选择打开和关闭SDL检查的位置就是:项目属性->配置属性->C/C++->SDL检查,选测是或者否。
此时我们选择”否”,则上面的那个错误就不会出现了。
或者将指针变量初始化为nullptr,也可以解决。
问题二:如何解决'fopen' 报错说unsafe的问题
解决方法转自https://blog.csdn.net/asbs12/article/details/51250288
碰到问题后按如下处理:
在根目录点击右键选择属性
选中配置属性 C/C++中的预处理器,在预处理器定义栏点击右侧的下拉箭头并选择编辑
会出现如下界面
将_CRT_SECURE_NO_WARNINGS粘贴到最后一行
确定后再编译,问题解决
问题三:error C2664: “fopen”: 不能将参数 1 从“CString”转换为“const char *”
解决方法转自https://blog.csdn.net/eva1988725/article/details/6300154
按照下面操作,依次选择
项目->()属性->常规->项目默认值->字符集->使用多字节字符集(这个选了就可以了)