C程序调试过程常见的错误

简介: 在C语言编程,一般需要借助C相关的编译软件,例如,在Keil uVision5编程环境下,如果提示工具连接错误,则表示MDK安装程序有问题,重新卸载,并全部删除后重新再进行安装后即可。

总结一下本在编程中,常见错误、和程序在调试过程中应该如何调试、修改。

在C语言编程,一般需要借助C相关的编译软件,例如,在Keil uVision5编程环境下,如果提示工具连接错误,则表示MDK安装程序有问题,重新卸载,并全部删除后重新再进行安装后即可。

1、Error C129:missing ‘;’before‘void’;//丢失;

    调试与修正:在函数声明的时候结尾没加分号;

2、Waring C235:parameter 3:different types;

  调整:参数类型不对,这表明函数的形参类型和声明的函数形参类型不一致;

  解决办法:将对应的函数形参声明的形参改成一致即可。

3、KEY.C(135): error C20: 'A': undefined identifier

调整:用户使用前有对‘A’定义。

解决:对A定义就可以了。

4、KEY.C(131): warning C28: 'A': unreferenced local variable

调整:用户义了‘A’并没使用‘A’;

解决:把‘A’删除。

5、KEY.C(135): warning C206: 'key': missing function-prototype

Key缺乏函数原型;两种可能是:

1、用户没有写key的函数体;

2、用户在模块化编程的时候没有声明key函数。

解决办法:申明key函数或写函数体

6、 *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL

SYMBOL:  _IIC_GETS

MODULE:  mian.obj (MIAN)

未添加_IIC_GETS,用户在模块化编程的时候没有把_IIC_GETS所在的库添加进来。

解决办法:把_IIC_GETS所在的库添加到工程文件。

7、mian.c(6): warning C318: can't open file 'file.h'

打不开‘file.h’;用户没有编写或添加'file.h',还有可能是名字写错了。

解决办法:添加、编写、修改'file.h'就可以了。

8、RROR L104: MULTIPLE PUBLIC DEFINITIONS

用户模块化编程的时候在'.h'文件声明时,给数组赋值了。

解决办法:把'.h'中的赋值删除。

9、warning C209: '_delay': too few actual parameters

Delay函数里面没有传递实参。

解决办法在函数调用的时候给传合适的实参。

10、warning:  #951-D: return type of function "main" must be "int"

MDK的main必须是int型的返回值;不然就会报错。

解决办法:把main中的空void改成整int。

11、 last line of file ends without a newline

解释:文件最后一行不是新的一行,编译器要求程序文件的最后一行必须是空行,想了半天没想通为什么要这样。

解决办法:可以不理会.若是觉得出现警告不爽,那么在出现警告的文件的最后一行敲个回车,空出一行。

12、warning: data may be used before being set

描述:变量'data'在使用前没有明确的赋值.如:uint8 i,data; //定义变量i和data,二者都没有明确赋值。

解决办法:初始化的时候赋初值。

13、warning: missing return statement at end of non-void function "******"

描述:返回非空的函数"getchaek"的最后缺少返回值声明.此处应该是return x;返回一个int型数据,若是没有返回值,编译器产生警告getchaek是一个带返回值的函数,但是函数体里面没有return。

解决办法:在函数体加上return,返回一个值回;

14、MAIN1602.C(74): error C213: left side of asn-op not an lvalue

左边的数据不是一个有效的左值;数组能赋值给指针,但是指针不能赋值给数组。

解决办法:不能让指针赋值给数组;语法错误。

15、INIT12864.C(9): error C100: unprintable character 0xBF skipped

后面屏蔽就会发现,里面有编译器不能识别的汉字,编辑的时候难免出这样的错误;

解决办法:把汉字删除或者屏蔽。

15、warning C317: attempt to redefine macro 'uint'

Define 是宏定义,他不是语句,在他后面不用加上;如果添加了分号,分号一同编译和替换。

解决办法:把int后面的';'删除


相关文章
|
Web App开发 关系型数据库 RDS
电源缓启动(软起动)原理
该文讨论了电源的缓启动(软起动)技术,主要是为了解决热插拔过程中可能产生的电源振荡和大电流冲击问题。缓启动通过防抖动延时和控制电流上升斜率来避免系统受影响或设备受损。文章提到了两种类型的缓启动电路:电压斜率型和电流斜率型,并详细解释了电压型缓启动电路的工作原理,包括各个元件的作用和电路的缓启动阶段。
707 12
|
Linux 芯片 开发者
|
12月前
|
存储 安全 搜索推荐
时统设备:构建精准时间体系的关键力量​
在现代科技中,时间精准同步至关重要。时统设备作为核心装备,广泛应用于国防、通信、电力和金融等领域。文章聚焦同步天下品牌的SYN012型设备及B码时统设备,解析其功能、特点与应用场景。SYN012型设备支持多种信号输入输出,适应复杂环境;B码设备则具备高精度授时和多样化输出能力。两者为各领域提供可靠时间保障,推动科技进步。文章强调原创保护,禁止未经授权转载。
|
NoSQL IDE 开发工具
**《惊爆!揭开函数调用关系图的神秘面纱,让你的代码世界天翻地覆!》**
【8月更文挑战第16天】函数调用关系图是软件开发中的重要工具,帮助直观理解程序结构与逻辑流程,有效进行代码优化、调试及复杂系统理解。可通过静态分析工具(如SourceMonitor)在不运行代码情况下构建调用图,或利用动态跟踪(如GDB、Python的`sys.settrace`)在运行时记录调用顺序。集成开发环境(IDE)如Visual Studio亦提供相关功能。不同方法各有优势,可根据需求灵活选择。
861 4
|
网络协议 网络安全 Docker
将Certbot/ACME.sh自动化申请的证书自动部署到阿里云CDN
本文介绍了阿里云 CDN SSL 证书自动更新工具,定期检查证书有效期,使用Let's Encrypt 等工具签发的证书自动更新至阿里云 CDN,支持 Docker 及 .NET 8 部署,简化证书管理流程。
|
消息中间件 人工智能 监控
Paimon x StarRocks 助力喜马拉雅直播实时湖仓构建
本文由喜马拉雅直播业务与仓库建设负责人王琛撰写,介绍了喜马拉雅直播业务的数据仓库架构迭代升级。文章重点分享了基于 Flink + Paimon + StarRocks 实现实时湖仓的架构及其成效,通过分钟级别的收入监控、实时榜单生成、流量监测和盈亏预警,大幅提升了运营效率与决策质量,并为未来的业务扩展和 AI 项目打下坚实基础。
799 5
Paimon x StarRocks 助力喜马拉雅直播实时湖仓构建
|
缓存 关系型数据库 数据库
GitLab内存占用过高的解决方法
GitLab内存占用过的高解决方法: 系统环境:CentOS 7 GitLab版本:12.10.2-ee 服务器配置:2核4G 非转载以实践
12146 1
GitLab内存占用过高的解决方法
|
安全 网络性能优化
MQTT 客户端 MQTT.fx 使用说明
MQTT 客户端 MQTT.fx 使用说明
2291 0
|
关系型数据库 MySQL 编译器
【Qt 数据库 】qt使用mysql的准备工作
【Qt 数据库 】qt使用mysql的准备工作
533 1
|
容器
常用库函数的用法——memset() / swap() / reverse() / unique()函数的用法
常用库函数的用法——memset() / swap() / reverse() / unique()函数的用法
379 0

热门文章

最新文章