我第一次学的编程语言是java,当时用eclipse开发环境,后面没学成,转成单片机。
刚开始学51单片机的时候,从强大的开发工具eclipse转变到像远古石器一样的Keil,还是挺不习惯的。
除了不会自动补全之类的基础功能以外,最头痛的就是编译出错时去找问题,比如经常会遇到"syntax error near"这样的编译错误。
新手对c语言语法不熟练,或者不细心,特别容易缺括号、缺分号啥的低级错误,而有些错误,不会像eclipse一样直接给你定位到某一行。有些哪怕定位到了,也可能不是那行代码引起的。
类似于这种:
是不是像极了刚学单片机的你,写的程序?
在使用Keil开发时,遇到 "syntax error near" 这样的编译错误通常意味着你的代码中存在语法错误,而且错误通常发生在某个关键字、操作符或者标识符的附近。
"syntax error near" 是一个通用的错误提示,它并不提供具体的错误原因。
所以,解决这个问题,就像破案一样,可能要考虑很多潜在的问题。
Keil我用了至少也有10年时间了,今天针对 "syntax error near" 的编译错误,来分享下我的解决步骤:
1.检查错误信息:
仔细阅读编译器给出的错误信息,它会告诉你错误发生的大致位置。错误信息通常会包含行号,比如上图的SECOND.C(101)这种,这可以帮助你快速定位到问题代码。
2.检查附近的代码:
如果编译器给出的行号那里的代码,感觉没有问题,则要检查错误信息附近的代码。查找是否有拼写错误、缺少分号、括号不匹配、关键字使用不当等问题。
3.检查语法:
看下有没有语法错误,之前就个老铁,把main写成了mian,这种低级错误,找了几个小时。
还有就是,所有的控制语句(如if、for、while等)都正确地使用了括号。
4.检查包含的头文件:
有时候,错误可能是由于包含了错误的头文件,或者头文件中的代码有问题。
检查所有 #include 语句,确保它们都是正确的,并且包含的头文件与你的项目兼容。
5.检查宏定义和预处理器指令:
如果错误信息附近有宏定义(如#define)或者预处理器指令(如#if、#endif等),检查它们是否正确使用。
6.缩小问题范围:
如果错误难以定位,尝试逐步注释掉代码块,逐步缩小问题范围,直到找到确切的错误位置。
7.使用代码编辑器的辅助功能:
有时候Keil看起代码来,没那么直观,所以我一般会借助一些代码编辑器,比如Notepad++之类的。
8.直接复制错误信息到搜索引擎
其实keil的大多数错误,都能通过搜索找到答案,直接把错误信息复制到搜索引擎就可以了。
就冲这点,我对Keil的好感度直接加100。
以上8种方法,其实适用于大多数的代码编译错误的问题。
最近很多粉丝问我单片机怎么学,我根据自己从业十年经验,累积耗时一个月,精心整理一份「单
片机最佳学习路径+单片机入门到高级教程+工具包」,全部无偿分享给铁粉!!!
除此以外,再含泪分享我压箱底的22个热门开源项目,包含源码+原理图+PCB+说明文档,让你迅速进阶成高手!
教程资料包和详细的学习路径可以看我下面这篇文章的开头。
《单片机入门到高级开挂学习路径(附教程+工具)》
《单片机入门到高级开挂学习路径(附教程+工具)》
《单片机入门到高级开挂学习路径(附教程+工具)》