编译经常报错?照书打的都错?报错了不知道如何是好?来看看吧



一下所有报错特指使用C4编译的报错情形

好了首先要明白一点,任何一个编译器报错都是会告诉你具体是哪个地方错了的


1.png



这是源码,下面是报错信息
2.png



报错信息里提示,XXXXXXX一直到error前面有个5:14
这就告诉你,是第五行的某个位置出现了一个错误
下面还有一段话,告诉我们print没有定义过,接着是错误的代码。
后面的不用管。那么我们看源码图片,第五行的print是打错了,少了一个f,改过来,就正常了。



接下来是头文件引用,我们经常会遇到提示头文件未找到这样的问题,
首先要确定你的编译器是不是有这个头文件,然后名称是否填写正确。
其中C++中流处理头文件(仅限于流处理的头文件)iostream和fstream等等,使用的时候
#include<iostream>
后面不要加.h,include和尖括号之间不要有空格

然后使用SDL的时候,头文件的名字注意,除了最后的.h一定都是大写的
#include <SDL.h>
这时候中间就要有空格了




缺少符号或者参数等等,一般报错信息如下
3.png





缺少定义,同样是缺少,与上不同的是,定义并不属于规定项目,例如我们删掉上面的
int i=2;
会产生如下信息

4.png

报错信息前两行告诉了我们错误信息发生在哪个函数中,下面是位置和原因
信息中说,i在这里没有被声明,declared声明宣称的意思,看到这行报错,

就说明你需要定义一些东西出来了。
同样的,如果你调用了一个没有定义过的函数(这里就和变量不同了,被调用的函数代码一定要定义在调用函数的上面,或者要在调用函数前面像声明变量一样声明这个函数)。
提示的时候,只会提示函数名,不会附带括号和里面的形参表,
例如我要在printf后面加一行a();
那么报错信息中i的地方会变为a,而不是a()。当然干错方式相同,在前面定义一下就好。

5.png



这个报错提示是不是很熟悉
这是个典型的类型错误,问题可能出在多种地方可能是符号,也可能是字母,还可能是空格。
我在一段程序中,将month后面的分号改成了,中文输入法下的分号,也就是全角符号。
这样就产生了图中的报错信息,'\357'这个错误提示不是固定的,但是格式不变,出现'\数字'这样的标准,就说明是类型问题了。
修改方法很简单了,就是把错误的地方替换成半角英文符号,但有的时候看上去又没有错误,这是怎么回事儿呢
,通常问题出在不可见字符上。
大家都知道程序中的TAB空格换行等字符是不会显示出来的,
一般情况下通过观察代码根本无法分辨,所以我们就要把这行中带有空格的地方全部删掉,重新在需要的地方填写,如果还有报错信息,就把光标移动到这行的开头,删除不可见字符,直到上一行的‘;’处,重新回车断行,
这样一般都可以解决。如果自己换过字体不容易分辨,或者觉得上面的方法太过复杂的话,
那么就点击手机上的选项键,选择格式化代码,英文模式下为format,不对的符号就会变成一堆乱码,如下

6.png



因为格式化代码会删掉换行符(图中右大括号本来在第7行,格式化后跑到了第6行),所以只要把乱码部分删除,错误的部分就应该都被删删除了,重新输入分号,回车,继续格式化代码,如果代码没有乱码提示,说明完全正确了(格式化代码不会影响双引号中的部分,如果双引号本身用错了,那么包括引号中的非英文部分会整体变为乱码)。






程序中出的错误千奇百怪,以上8中基本包含了各位编程中常见的问题
当然还有很多别的错误,首先要明确一点,函数,命令,宏定义,是不同的,printf是个函数,所以打错的话它的错误提示和变量等等的提示错误是一样的:未定义。
但是命令不同

7.png



这是我把include打错了,提示就和之前打错printf不同,但是这不影响我们修改,通过报错信息中的行数提示和错误字段提示,我们很容易就能够知道是哪里出了怎样的错误,所以正常修改就行。
由于我们编辑中会产生各种不可预测的错误,所以无法把错误信息完全罗列出来,不过通过位置提示,我们就能找到下手之处。




以上内容来自百度贴吧