常见C语言编译错误解析【转】

时间:2022-09-06 13:43:15
C语言编译错误信息及说明
1、 在函数 ‘transform’ 中:7: 错误:expected ‘;’ before ‘{’ token
    解释:‘{’之前的某个语句缺少分号‘;’;
 
2、 在函数 ‘Insert_SqList’ 中:6: 错误:‘listsize’ 未声明 (在此函数内第一次使用)
    解释:‘listsize’这个变量未声明;

3、 在函数 ‘Hanoi’ 中:9: 错误:提供给函数 ‘Hanoi’ 的实参太少
    解释:使用‘Hanoi’函数时,输入的实参不足;
 
4、 在函数 ‘max’ 中:3: 错误:‘a’ 被重新声明为不同意义的符号
    解释:在函数‘max’中,变量名a被重新声明为不同的变量类型;
 
5、 在函数 ‘EvaluateExpression’ 中:7: 错误:程序中有游离的 ‘#’
    解释:在函数‘EvaluateExpression’中,有不可识别的ASCII字符。一般这种情况是由于将代码复制进代码区时,有一些编译器不能识别的字符也被复制进去,导致的编译错误;
 
6、 在函数 ‘encode’ 中:6: 错误:被调用的对象 ‘code’ 不是一个函数
    解释:在函数‘encode’中,调用‘code’时发现,code并未声明为一个函数;
 
7、 在函数 ‘prime’ 中:6: 错误:在 C99 模式之外使用 ‘for’ 循环初始化声明
   
解释:在函数‘prime’中,调用for循环的格式不符合C99规范。一般这类问题的错误格式为for(int
i=0;i<...),由于C语言是要求你必须将变量在函数开始处进行声明,不支持在任意地方声明变量,所以正确的格式应该是int i;...;
for(i=0; i<...);
 
8、 21: 错误:expected identifier or ‘(’ before ‘}’ token
    解释:在‘}’之前缺少一个标识符或‘(’;
 
9、 在函数 ‘CreatLink_L’ 中:14: 错误:赋值时类型不兼容
    解释:在CreatLink_L函数中,在赋值的过程中等号两侧的数据类型不兼容;
 
10、段错误

解释:一般来说,段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个指是由gdtr来保持的,他是一个48位的寄存器,其中32位是保存
由它指向的gdt表,后13位保持对英语gdt的下表,最后3位包括了程序是否在内存中以及程序的在cpu中运行的级别,指向的gdt是由以64位为一个
单位的表,在这张表中就保存着程序运行的代码段以及数据段的起始地址以及与此相应的段限和页面交换还有程序运行级别还有内存粒度等等的信息。一旦一个程序
发生了越界访问,cpu就会产生相应的异常保护,于是segmentation
fault(段错误)就出现了。出现段错误比较常见的情况是访问不安全的指针对象,即指针所指的值并非预期的值时,对指针所指向的对象进行操作。引发段错
误后,程序执行终止,之后的代码将不再执行;
 
11、在函数 ‘ListInsert_Sq’ 中:12: 错误:‘SqList’ 没有名为 ‘Length’ 的成员
    解释:在函数‘ListInsert_Sq’中,访问的结构体‘SqList’并没有‘Length’这个成员;
 
12、在函数 ‘ReverseList_Sq’ 中:11: 错误:数组下标不是一个整数
    解释:在函数‘ReverseList_Sq’中,访问数组成员时使用的下标不是整数。数组中标识每个元素都有一个整形下标,实际操作中是在数组基址的基础上加上这个整形下标得出存储对应数组元素地址,然后访问这个地址存储的数据;
 
13、在函数 ‘dec_to_oct’ 中:10: 错误:实参 1(属于 ‘Push_Sq’)类型不兼容
    解释:在函数‘dec_to_oct’中,调用函数Push_Sq时,输入的第一个实参类型与函数指定的第一个实参类型不兼容;
 
14、在函数 ‘GetTop’ 中:7: 错误:在非结构或联合中请求成员 ‘top’
    解释:在函数‘GetTop’中,在访问结构体或联合体内的成员变量‘top’时,发现访问的变量类型并非是一个结构体或联合体;
 
15、在函数 ‘score’ 中:5: 错误:case 标号不能还原为一个整常量

解释:在函数‘score’中,case标号后跟着的表达式的值并非一个常量值。C语言对于switch语句的语法规定,要求switch后面的括号内为
一个表达式。其值应与某一个case后面的常量表达式的值相对应,然后就执行此case后面的语句。这就意味着在case语句之后必须是一个整形常量,并
且在C编译器中要求这个常量表达式的值还必须是一个整形值;
 
16、5:23: 警告:多字节字符常量 在函数 ‘transform’ 中:
    解释:对字符变量赋值应对应一个字符常量,如char c = 'c'。如果将多个字符常量赋给一个字符变量时,如char c = 'abc',就引发多字节字符常量警告;
 
17、在函数 ‘transform’ 中:3: 警告:隐式声明与内建函数 ‘strlen’ 不兼容
    解释:在程序中使用字符串函数strlen时未include<string.h>。我们的系统希望用户能自行实现一些功能代码,而不是调用库函数。必须要使用库函数的地方,我们会在调用后程序时导入include语句;
 
18、6: 错误:‘prime’ 重定义3: 错误:‘prime’ 的上一个定义在此
    解释:prime函数重定义;
 
19、在函数 ‘leap_year’ 中:3: 错误:赋值运算中的左值无效
   
解释:赋值操作符‘=’的左端的值为左值(l_value),对应右侧的值为右值(r_value)。左值的要求是可寻址的(l的意思为can be
though of as location,而不是left),一般是变量。右值的要求是可读的(r的意思为can be though of as
"read" value,而不是right),可以是变量和常量;
 
20、在函数 ‘IntersectList_Sq’ 中:18: 错误:双目运算符 * 操作数无效
    解释:双目运算符‘*’的操作数不满足运算符的要求,或者说两个操作数不能发生指定的双目运算;
 
21、在函数 ‘ListInsert_DuL’ 中:8: 警告:初始化时将整数赋给指针,未作类型转换
    解释:初始化指针变量时,将整型数值赋给该变量,引发的类型不匹配警告;
 
22、在函数 ‘DerivationPolyn’ 中:7: 错误:无效的初始值设定
    解释:初始化变量时使用不兼容的右值来初始化左值,往往会引发这种错误;
 
23、在函数 ‘cmpterm’ 中:7: 错误:‘->’ 的实参类型无效
    解释:‘->’的指向的结构体或联合体成员名不存在,即在访问指针指向的结构体类型中不存在的成员时,会引发这种错误;
 
24、在函数 ‘lineEdit’ 中:15: 警告:传递参数 2 (属于 ‘Pop_Sq’)时将整数赋给指针,未作类型转换
    解释:在函数‘lineEdit’中,调用函数Pop_Sq时要求第二个参数为指针变量,而输入的参数为整型;
 
25、在函数 ‘ListInsert_DuL’ 中:8: 警告:从不兼容的指针类型初始化
    解释:在函数‘ListInsert_DuL’中,为指针变量初始化值时,右值与指针类型不兼容;
 
26、在函数 ‘ReverseList_Sq’ 中:8: 错误:与 ‘pa’ 类型冲突
    解释:可能对变量‘pa’使用了其类型不支持的操作。或者将‘pa’变量赋给不同类型的变量或重定义该变量;
 
27、8:9: 错误:空的字符常量
    解释:C的字符常量是用单撇号括起来的一个字符。如'a','x','D','?','$'等都是字符常量。但注意''并不表示一个字符常量。如果访问'',就会引发空字符常量错误;
 
28、在函数 ‘MergeList_Sq’ 中:18: 警告:在无返回值的函数中,‘return’ 带返回值
    解释:void函数为无返回值的函数。这就意味着函数中使用‘return’语句时,之后不能跟有返回值;
 
29、在函数 ‘rabbit’ 中:3: 错误:可变大小的对象不能被初始化
    解释:这种错误一般发生在用变量作为数组大小来初始化数组变量;
 
30、在函数 ‘days’ 中:4: 警告:标量初始值设定项中有多余元素
    解释:在函数‘days’中,在初始化某个数组时,初始化的元素个数多于定义时的元素个数;
 
31、13:39: 错误:数字中有太多小数点
    解释:数字常量中有太多小数点,不符合数字常量的定义;
 
32、3:9: 错误:整数常量的“f”后缀无效 在函数 ‘bonus’ 中:
    解释:“f”后缀只能添加在实型常量之后,加在整型常量后就会引发该错误;
 
33、在函数 ‘count_words’ 中:7: 错误:‘c’ 重声明为没有外部链接

解释:在函数‘count_words’中,声明一个新的变量时,使用了已经存在的某个变量的名称来命名新的变量。C程序在开始执行函数后,首先会根据变
量名和变量类型为声明的变量分配存储空间,这就要求所有的变量的名称必须在本函数内是唯一的。任何对同一个变量名的重新声明都将是为错误;
 
34、在函数 ‘bonus’ 中:7: 错误:break 语句不在循环或开关语句内
    解释:break语句的功能是用来跳出switch结构和循环体,即提前结束循环接着执行循环下面的语句。因此C语言要求break语句不能用于循环语句和switch语句之外的任何语句中;
 
35、在函数 ‘prime’ 中:5: 错误:自增运算中的左值无效
    解释:在函数‘prime’中,调用自增操作符时,操作的对象不符合左值要求;
 
36、在函数 ‘GetElem_L’ 中:14: 错误:下标运算的左操作数既非数组也非指针
    解释:下标运算符(或变址运算符)'[]'要求操作符左侧的变量名必须是数组名或指针;
 
37、在函数 ‘Insert_SqList’ 中:7: 错误:expected declaration or statement at end of input
    解释:多数是由于少了匹配的大括号造成的,当然小括号没有闭合也有可能!编译的时候找到文件的末尾也没有找到该出现的东西;
 
38、在函数 ‘count_words’ 中:3: 警告:从不兼容的指针类型初始化
    解释:在函数‘count_words’中,用非指针类型的值来初始化指针类型变量;
 
39、在函数 ‘ListInsert_Sq’ 中:6: 错误:在 ‘data’ 中缺少数组大小
    解释:在函数‘ListInsert_Sq’中,声明名为data的数组时,没有给出数组的大小,如语句char data[];
 
40、在函数 ‘days’ 中:5: 错误:重复的 case 常量
    解释:在函数 ‘days’中,发现了重复出现的case常量。switch/case语句要求每一个case的常量表达式的值必须互不相同,否则就会出现互相矛盾的现象(对表达式的同一个值,有两种或多种执行方案)。

常见C语言编译错误解析【转】的更多相关文章

  1. C语言编译错误:Variably modified array at file scope

    今天在编译一段C源程序时,遇到编译错误提示 error: variably modified 'data' at file scope.原因在于代码头部有这样几行: +; int data[maxsi ...

  2. 常见C语言内存错误

    前言 C语言强大的原因之一在于几乎能掌控所有的细节,包括对内存的处理,什么时候使用内存,使用了多少内存,什么时候该释放内存,这都在程序员的掌控之中.而不像Java中,程序员是不需要花太多精力去处理垃圾 ...

  3. new types may not be defined in a return type&lpar;c&plus;&plus;语言编译错误,处理&rpar;

    在写程序的时候,定义类时要在大括号后面加上: class Point{ public: Point(int a,int b); Point(const Point &p); int getx( ...

  4. warning MSB3245&colon; 未能解析此引用。未能找到程序集&OpenCurlyDoubleQuote;CemeteryBLL”。请检查磁盘上是否存在该程序集。 如果您的代码需要此引用,则可能出现编译错误。

    多层架构,在每次重新生成解决方案的时候,老是提示:warning MSB3245: 未能解析此引用.未能找到程序集“CemeteryBLL”.请检查磁盘上是否存在该程序集. 如果您的代码需要此引用,则 ...

  5. 两个常见Qt编译错误的解决

    作者:朱金灿 来源:http://blog.csdn.net/clever101 如果在电脑上安装了两个Qt版本,在编译一个工程时有可能出现如下的编译错误: ERROR: failed to refr ...

  6. C&plus;&plus;函数重载实现的原理以及为什么在C&plus;&plus;中使用用C语言编译的函数时,要在函数名称前面加上extern &quot&semi;C&quot&semi;声明

    C++相对于C语言而言支持函数重载是其极大的一个特点,相信在使用C语言的时候大家如果要写一个实现两个整型数据相加的函数还要写一个浮点型数据相加的函数,那么这两个函数的名字绝对不可以一样,这样无疑在我们 ...

  7. 转 C语言编译过程简介

    C语言编译过程简介 C语言编译过程简介 刚开始接触编程的时候,只知道照书敲敲代码,一直都不知道为什么在windows平台下代码经过鼠标那样点击几下,程序的结果就会在那个黑色的屏幕上.现在找了个机会将C ...

  8. GCC 使用-C语言编译过程

    任何一种高级语言,要想在机器上执行,必须翻译为机器能读懂的机器语言.编译器就相当于翻译官,将高级语言翻译为机器语言. GCC 最初只用了编译 C 语言程序,全称是 GNU C Compiler.后来扩 ...

  9. 一个C&plus;&plus;宏定义与枚举定义重复的编译错误

    C++的开发效率低是众所周知的,原因比如有: 语言复杂度高 编译效率低 工具链不够完整高效(尤其是linux下) 另外一个恐怕是不少编译错误让人摸不着头脑,今天碰到一个,举个例子: #include ...

随机推荐

  1. Oracle 分页原理

    oracle rownum 及分页处理的使用方法 在实际应用中我们经常碰到这样的问题,比如一张表比较大,我们只要其中的查看其中的前几条数据,或者对分页处理数据.在这些情况下我们都需要用到rownum. ...

  2. 修改了系统自带头文件后&comma;Xcode会报错

    1.Xcode自带头文件的路径 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Develo ...

  3. nginx利用image&lowbar;filter动态生成缩略图

    转自:http://www.nginx.cn/2160.html "我如今是有些图片须要生成缩略图.这个如今加了image_filter这个已经实现了.但我不知道怎么样才干訪问我上传的原图& ...

  4. Single Image Haze Removal Using Dark Channel Prior

    <Single Image Haze Removal Using Dark Channel Prior>一文中图像去雾算法的原理.实现.效果及其他. Posted on 2013-08-2 ...

  5. django框架中的中间件

    什么是中间件 中间件就是在url进入路由之前进行检测的一个类 也就是说,每一个请求都是先通过中间件中的 process_request 函数,这个函数返回 None 或者 HttpResponse 对 ...

  6. org&period;apache&period;ibatis&period;binding&period;BindingException&colon; Invalid bound statement &lpar;not found&rpar;&colon; com&period;shen&period;mapper&period;UserMapper&period;findById

    org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.shen.mapper.Use ...

  7. 使用特性将数据库返回的datatable转换成对象列表

    public class ColumnMapAttribute : Attribute { private readonly string _name; public ColumnMapAttribu ...

  8. bzoj 4770 图样 - 概率与期望 - 动态规划

    题目传送门 传送门I 传送门II 题目大意 有一个$n$个点的完全图,每个点的权值是$[0, 2^{m})$中的随机整数,两点间的边的权值是两点点权的异或和,问它的最小异或生成树的边权和的期望. 考虑 ...

  9. Scrapy命令行工具简介

    Windows 10家庭中文版,Python 3.6.4,virtualenv 16.0.0,Scrapy 1.5.0, 在最初使用Scrapy时,使用编辑器或IDE手动编写模块来创建爬虫(Spide ...

  10. Swoole2&period;0协程客户端连接池的实现

    Swoole2.0官方默认的实例是短连接的,在请求处理完毕后就会切断redis或mysql的连接.实际项目可以使用连接池实现复用. 实现原理也很简单,使用SplQueue,在请求到来时判断资源队列中是 ...