keil提示:missing ';' before 'XXX'但又找不到是哪里少了分号——已解决!
今天写一个51程序,keil在编译时总提示丢失了一个分号,但怎么都找不到是哪里丢失了分号,搞了一下午才解决问题,现在把经验在此分享,以求让他人不要犯同样的错误!提示信息为:
LCD12864.H(20): error C129: missing ';' before 'Flag'
我在LCD12864.c文件里定义的u8 Flag = 0;
在LCD12864.H文件里作此声明:extern u8 Flag;
因为问题是出在头文件里,所以现在把LCD12864.H文件里相关代码列出来:
#ifndef _LCD12864_H
#define _LCD12864_H
#include <reg52.h>
extern u8 Flag;
编译后出错,然后鼠标双击错误信息,箭头会跳转到extern u8 Flag;这句代码上!
但大家看看:这句根本没少分号(当然它前后几行的语句也都没有少分号的)。
实际问题所在处是extern u8 Flag里的u8!将上述代码改为如下即可:
#ifndef _LCD12864_H
#define _LCD12864_H
#include <reg52.h>
#define u8 unsigned char
#define u16 unsigned int
extern u8 Flag;
哈哈,原因就不用解释了吧,一看便知。但这种情况,编译器为什么会提示少了分号,这我就不懂啦,麻烦哪个牛人讲讲其中的奥秘!
另外为了将导致这种出错现象的情况列举的更全面(很容易就找出问题所在的情况就不列举啦),我将网上其它网友遇到的情况也列举下:
如下文章链接:http://weidebao1985.blog.163.com/blog/static/20368906200971405819673/
关于keil出现的两个奇怪的错误
今天帮同学看程序,发现keil里面有两个比较变态的错误。,现总结总结呗
问题一:编译时老是提示某行缺少分号,或者说存在非法字符,但是表面看来有看不出存在异常的符号并且分号也是在英文模式下输入的,唉,肉眼真的看不出来啦,现在教你一招:用双斜杠“//”把出错的这一行注释掉,这样你就可以看见这行或许有一些因为你当时输入时不小心输入的混乱字符,然后把混乱字符删掉,最后去掉注释符,一切就OK了,对于keil的这个漏洞这招真的很有用的;
问题二:编译时总是提示语法错误,表面看来真的没有什么,同学就是写了一个简单的数组?问题何在呢?问题出在数组的名字选择了data[5],后来随便换了一个名字竟然不报错了,看来在keil中用C语言写程序时也不能动用data这个名字啊,够狠,切记切记,呵呵。
相关文章
- 解决使用Git时报错"bash: $'302226git': command not found"
- 解决:cant't run '/etc/init.d/rcS':No such file or directory
- 如何去掉图片点击后的超级链接虚框?(已解决!)
- Linux df排查inode已满及解决方法
- Can't connect to X11 window server using 'localhost:0.0' 的解决
- git add时遇到类似fatal: Path 'XXX' is in submodule 'XXX'错误提示如何解决?
- Idea运行报错Error running 'Application': Command line is too long的解决方法
- 数据挖掘主要解决的四类问题
- Build step 'Execute shell' marked build as failure解决
- 微服务解决了什么问题?(读书笔记《软件构架基础 工程方法》)
- Linux-026-Centos Nginx 配置 pid 文件路径解决 service nginx status 提示:Can't open PID file /var/run/nginx.pid (yet?) after start: No such file or directory
- CF MVC3此操作要求连接到 'master' 数据库。无法创建与 'master' 数据库之间的连接,这是因为已打开原始数据库连接,并且已从连接字符串中删除凭据。请提供未打开的连接 解决方法
- Win10无法更新出错代码为0x80080005的解决方法
- Idea解决Could not autowire. No beans of ‘xxxx‘ type found的错误提示
- 浅析JWT中token过期后解析报错ExpiredJwtException的解决及过期之后如何进行后续业务处理
- “/”应用程序中的服务器错误和Server Error in '/' Application... 的终极解决方法
- [已解决]报错:The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone.
- 图文详解 (Kubernetes)K8S 和 容器中的退出状态码含义和原因及解决方法
- EMC公司进行SAN拆分 旨在解决更为细化的存储需求
- 工艺问题已解决?英特尔将在2022年推出5纳米芯片
- GAMES202作业0-环境搭建过程&解决遇到的问题