【填坑】常见编译报错识别和修改方法,修改程序我能行!!!
c4droid吧
全部回复
仅看楼主
level 10
pft9090 楼主
编译经常报错?照书打的都错?报错了不知道如何是好?来看看吧
2013年05月23日 13点05分 1
level 10
pft9090 楼主
一下所有报错特指使用C4编译的报错情形
好了首先要明白一点,任何一个编译器报错都是会告诉你具体是哪个地方错了的
这是源码,下面是报错信息
报错信息里提示,XXXXXXX一直到error前面有个5:14,这就告诉你,是第五行的某个位置出现了一个错误,下面还有一段话,告诉我们print没有定义过,接着是错误的代码。
后面的不用管。那么我们看源码图片,第五行的print是打错了,少了一个f,改过来,就正常了。
2013年05月23日 14点05分 3
楼主你好,怎么输入数组呢?
2013年11月29日 01点11分
回复 仰望星空炫 :用循环就行了,字符数组可以直接用scanf(“%s”,数组首地址)这样输入
2013年11月29日 04点11分
回复 pft9090 :回复[5]为什么会报错啊?难道不行么?
2013年11月30日 05点11分
回复 仰望星空炫 :什么5为什么会报错0.0,能发一下代码图和报错图么~~~我不太理解你说的意思。
2013年11月30日 08点11分
level 10
pft9090 楼主
接下来是头文件引用,我们经常会遇到提示头文件未找到这样的问题,首先要确定你的编译器是不是有这个头文件,然后名称是否填写正确。
其中C++中流处理头文件(仅限于流处理的头文件)iostream和fstream等等,使用的时候
#include<iostream>
后面不要加.h,include和尖括号之间不要有空格
然后使用SDL的时候,头文件的名字注意,除了最后的.h一定都是大写的
#include <SDL.h>
这时候中间就要有空格了
2013年05月23日 14点05分 4
我想知道头文件存放的具体目录是…
2013年10月09日 15点10分
stdio怎么用
2013年10月11日 05点10分
回复 转笔热 :这个正常使用就行,include "stdio.h"。最新版的C4没有用,什么情况不太清楚,之前的版本都是在使用C++的那几个流处理头文件会有书写格式问题。
2013年10月11日 08点10分
回复 qq10097355 :Android\data\com.n0n3m4.droidc\。这里面有两个文件夹,gcc和tcclibs,这两个文件夹打开都有一个include的文件夹,头文件都在里面。gcc\include里面是C++的头文件,tcclibs\include里面是C的。
2013年10月11日 08点10分
level 10
pft9090 楼主
缺少符号或者参数等等,一般报错信息如下
图片来自:pft9090的百度相册这里报错信息的意思是,得到printf前期望得到一个“;”,这是因为我在编译的时候把上面程序中int i=2;后面的分号删掉了,这样编译器就会向我们要一个语句结束标志。
同样的缺少其他东西的时候也回有类似的提示,单引号中是缺少的东西,expected是期望的意思,后面括号里会告诉我们一个较为具体的位置。
但是这样的错误通常仅限于已经规定好的部分,本例中,一个语句结束,就需要一个分号,属于规定好的,或者已经定义了一个函数,某个参数又不能缺省的情况。
2013年05月26日 01点05分 7
请问,怎样才算是规定好的部分?
2013年05月26日 04点05分
回复 虎绿林 :就是指那些编译器已经定制好的,格式性的东西。比如显示的时候我们用%d,%c,语句后面要分号,括号要成对等等这些。函数,变量名这些需要我们自己去定义,或者有自定义功能的地方。这只是为了方便理解自己说的[哈哈]
2013年05月26日 04点05分
搞不懂了……
2013年05月26日 05点05分
回复 虎绿林 :[泪],最简单理解就是缺符号了,单纯的少了符号,他就那么提示你。
2013年05月26日 08点05分
level 10
pft9090 楼主
缺少定义,同样是缺少,与上不同的是,定义并不属于规定项目,例如我们删掉上面的
int i=2;
会产生如下信息
报错信息前两行告诉了我们错误信息发生在哪个函数中,下面是位置和原因
信息中说,i在这里没有被声明,declared声明宣称的意思,看到这行报错,就说明你需要定义一些东西出来了。同样的,如果你调用了一个没有定义过的函数(这里就和变量不同了,被调用的函数代码一定要定义在调用函数的上面,或者要在调用函数前面像声明变量一样声明这个函数)。提示的时候,只会提示函数名,不会附带括号和里面的形参表,例如我要在printf后面加一行a();那么报错信息中i的地方会变为a,而不是a()。当然干错方式相同,在前面定义一下就好。
2013年05月26日 01点05分 8
貌似gcc可以在调用之后定义
2013年05月26日 04点05分
回复 虎绿林 :这个就不好说了,在调用后定义有的地方需要在前面声明,有的只要有就行。不过规范总是能减少不必要的麻烦,而且读起来可读性也会高不少。
2013年05月26日 04点05分
level 10
pft9090 楼主
这个报错提示是不是很熟悉
这是个典型的类型错误,问题可能出在多种地方可能是符号,也可能是字母,还可能是空格。
我在一段程序中,将month后面的分号改成了,中文输入法下的分号,也就是全角符号。这样就产生了图中的报错信息,'\357'这个错误提示不是固定的,但是格式不变,出现'\数字'这样的标准,就说明是类型问题了。
修改方法很简单了,就是把错误的地方替换成半角英文符号,但有的时候看上去又没有错误,这是怎么回事儿呢,通常问题出在不可见字符上。大家都知道程序中的
TAB,
空格,
换行等字符是不会显示出来的,一般情况下通过观察代码根本无法分辨,所以我们就要把这行中带有空格的地方全部删掉,重新在需要的地方填写,如果还有报错信息,就把光标移动到这行的开头,删除不可见字符,直到上一行的‘;’处,重新回车断行,这样一般都可以解决。如果自己换过字体不容易分辨,或者觉得上面的方法太过复杂的话,那么就点击手机上的选项键,选择格式化代码,英文模式下为format,不对的符号就会变成一堆乱码,如下
因为格式化代码会删掉换行符(图中右大括号本来在第7行,格式化后跑到了第6行),所以只要把乱码部分删除,错误的部分就应该都被删删除了,重新输入分号,回车,继续格式化代码,如果代码没有乱码提示,说明完全正确了(格式化代码不会影响双引号中的部分,如果双引号本身用错了,那么包括引号中的非英文部分会整体变为乱码)。
2013年05月26日 02点05分 9
格式化原来是这样用的……
2013年05月26日 04点05分
回复 虎绿林 :恩的,刚拿到C4我一直以为格式化是个很严肃的功能,试过才发现说的有点严重了。不过的确好用。
2013年05月26日 04点05分

2013年09月17日 14点09分
回复 pft9090 :格式化,误删过内存卡的表示心有余悸。
2013年09月19日 03点09分
level 10
pft9090 楼主
程序中出的错误千奇百怪,以上8中基本包含了各位编程中常见的问题
当然还有很多别的错误,首先要明确一点,函数,命令,宏定义,是不同的,printf是个函数,所以打错的话它的错误提示和变量等等的提示错误是一样的:未定义。
但是命令不同
这是我把include打错了,提示就和之前打错printf不同,但是这不影响我们修改,通过报错信息中的行数提示和错误字段提示,我们很容易就能够知道是哪里出了怎样的错误,所以正常修改就行。
由于我们编辑中会产生各种不可预测的错误,所以无法把错误信息完全罗列出来,不过通过位置提示,我们就能找到下手之处。
2013年05月26日 02点05分 10
level 10
pft9090 楼主
说道这里,这次改错方法的教学就全部结束了,本帖不沉的话我回继续向大家征集报错信息,为大家解答,作为补充。
但是提问前请
尊重一下我的劳动,认真看过我所写的东西后再发,如果是上面提到的内容还来提问的话我不会回复的。
2013年05月26日 02点05分 11
level 10
pft9090 楼主
@洋蛋炒饭 @qw3752258 求置顶,求填补,求管理
2013年05月26日 02点05分 13
level 10
pft9090 楼主
这千年老坟还能有人挖出来~~~~~
2014年12月28日 10点12分 85
level 10
pft9090 楼主
你看看大括号是不成对的,这提示就是少东西了
2015年04月22日 05点04分 96
回复
����ؼ����
:给我代码连接我看下,编译的提示就是59行的地方缺东西了。gcc安装包就在置顶帖里面有啊,装完后手机上是看不到的,但是选项里面的编译器里gcc会变成可用状态
2015年04月22日 12点04分
回复 依旧丶无聊 :明显少明显少括号么,左括号6个右括号3个,能对呢?
2015年04月23日 01点04分
1