C++项目的报错经历及解决之法

以下是自己在平时创建C++项目遇到的一些问题,记录在此:

2021年4月13日——问题集锦

编译环境是VS2019,新建一个C++空项目;

1、无法打开头文件xxx.h
注:此处的头文件是我通过“添加现有项”所加入项目的。

#include<search.h>//search是我自己定义的头文件

做法一:项目->xxx属性->C/C+±>常规->附加包含目录->点击编辑-> 添加 $(头文件所在路径名)

效果:无效,我个人认为原因可能是C/C++中的这个目录里面存放的是一些系统库的路径,而这个头文件是我自己定义的。
在这里插入图片描述
做法二:在项目->xxx属性->VC++目录->包含目录->编辑-> 添加$(头文件所在路径名)
效果:无效,emmmmmm,可能原因如上?
在这里插入图片描述
做法三:新建头文件和代码文件,复制粘贴。
效果:

  • 包含头文件处语句不报错,但是无法正确使用头文件中定义的类和包含的库函数
  • 选择快速修复错误,有一个选项是添加#include"xxx.h",进行添加之后,无语法报错。
    为了明白这里改错的机制,我查找了一下#include<>和#include
    " "的区别,简单说明如下
#include< file >编译程序会先到标准函数库中找文件 
#include”file” 编译程序会先从当前目录中找文件,一般适用于自己定义的头文件

那么,我就想:“那我为什么不能删掉代码中的#iinclude<>呢?我分明没有使用到这个语句呀,search.h又不是一个标准函数库。”

  • 我删除了#include<search.h>,但是仍然出现了“无法正确使用头文件中定义的类和包含的库函数”的错误,经过多次删减操作,我发现,只有#include<>和#include""都存在的时候,才会不报错,删除任意一个,都会产生报错。
  • 再之后,我查阅了一下search.h,发现它是一个标准库函数文件,也就是说,我定义的头文件和标准库函数文件重名了。
  • 改变了我的头文件名,使用#include"xxx.h",之后便没有出现刚才的情况.

2、fopen报错
错误 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.

做法一:项目 ->属性->c/c++ ->预处理器->点击预处理器定义,编辑,加入_CRT_SECURE_NO_WARNINGS(最好在第一行添加,可能存在优先级问题)
效果:无效,原因不明
在这里插入图片描述

做法二:
在#include语句前,添加语句

#define _CRT_SECURE_NO_WARNINGS

效果:顺利解决问题

3、使用了未初始化的局部变量“ch”
这里是编写代码的逻辑问题,由于要对一行语句逐字读入,所以使用了while循环,循环以ch的值作为判断依据。但是一开始,ch并没有初始化,这对于第一次的循环判断来说,是无解的。
做法如下

char ch;//此处不正确
while(ch !='#'){
	//do something
}

更改为:

char ch= ' ';//初始值改为空
while(ch !='#'){
	//do something
}

4、项目生成解决方案之后,窗口打开闪退

做法一:在退出程序的语句,例如return 0;前添加语句

system("pause");

效果:无效;这是一个我经常会遇到的错误,一般都是加上这个语句即可,但是这里不行,很奇怪,仔细对比了该项目的退出语句,可能是因为它使用的退出语句是exit(0);
以下是三类退出语句的不同:

exit(0):正常运行程序并退出程序;

exit(1):非正常运行导致退出程序;

return():返回函数,若在主函数中,则会退出函数并返回一值。

我的做法是将exit(0);注释掉,程序无法在某些条件退出程序,之后便可以解决这个问题。
问题解决之后,出现了如5所示的问题,这也是窗口闪退的原因——打开文件失败,在没有注释代码之前,程序在这一阶段立刻退出。

5、文件打开失败
一开始,我的测试文件是在另一个文件夹下面的,我使用的是绝对路径,但是一直出错,我就试着将测试文件移动到了本项目的Debug目录下,也就是可以使用相对路径进行文件打开。
在项目中,打开文件的函数是fopen();
但是这样依然会出现“文件打开错误”的提示,究其原因,我发现是我文件命名的问题。
原始的文件命名为xxx.txt,查阅网上的一些讨论之后,fopen使用相对路径打开一个文件时,“.txt”部分是它的属性,而不是文件名部分,因此,我将文件更名为xxx,在运行窗口输入:

xxx.txt

便可以正常打开文件。

————以上就是我2021年4月13日遇到的C++项目代码问题,之后遇到其他错误的话,我也会继续更新这个博客的。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值