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这个名字啊,够狠,切记切记,呵呵。
keil提示:missing ';' before 'XXX'但又找不到是哪里少了分号——已解决!的更多相关文章
- 【Redis】启动redis提示Could not connect to Redis at 127.0.0.1:6379: Connection refused 已解决
1.配置redis.conf文件,将daemonize no 为 daemonize yes即可(让redis作为守护进程运行)
- iOS开发中遇到的错误整理 - 集成第三方框架时,编译后XXX头文件找不到
iOS编译报错-XXX头文件找不到 错误出现的情况: 自己在继承第三方的SDK的时候,明明导入了头文件,但是系统报错,提示头文件找不到 解决方法 既然系统找不到,给他个具体路径,继续找去! 路径就填写 ...
- 导入Maven项目后,Eclipse提示“Missing artifact ”类的错误
导入Maven项目后,Eclipse提示“Missing artifact ”类的错误 标签: Maven Missing art 2016-08-15 16:05 679人阅读 评论(0) 收藏 举 ...
- C++错误——”无法启动程序”…\xxx.exe” 系统找不到指定的文件”
背景 在VS2010环境下,升级了一个用C++编写的程序,编译生成成功,但是,不能在VS中直接运行(可以通过打开debug文件目录的exe应用程序运行),提示以下错误:”无法启动程序”…\xxx.ex ...
- xcode6 framework missing submodule xxx 警告
xcode6 framework missing submodule xxx 警告 从xcode6开始,iOS可以直接创建生成framework了 如: 创建 framework 项目,TFKit.f ...
- adt-bundle-linux-x86_64-20131030下新建project提示找不到adb和R.java问题的解决
adt-bundle-linux-x86_64-20131030下新建project提示找不到adb和R.java问题的解决 在ubuntu14.04下,搭建Android开发环境,下载官方的adt- ...
- Eclipse新建Android工程,在模拟器运行的时候提示Unfortunately,XXX has stopped.
刚新建好的android工程在模拟器运行的时候出错,提示Unfortunately,XXX has stopped 查看Eclipse下面的错误信息,双击第一条 把ActionBarActivity前 ...
- vistual studio 2012 安装失败,提示Microsoft Vistual Studio 2012 Devenv找不到元素,等错误信息
在安装vistual studio 2012过程中,出现安装失败,提示Microsoft Vistual Studio 2012 Devenv找不到元素,等错误信息 解决方法是更新相应的server补 ...
- Keil提示premature end of file错误 无法生成HEX文件
今天舍友在使用Keil UV4的时候遇到一个问题:Keil提示premature end of file,无法生成hex文件. 代码是没有错误的.那么问题就出在设置上面了. 百度了一圈,发现很少人解答 ...
随机推荐
- openssl生成pem,密钥证书的创建
使用OpenSSL生成证书 首先得安装OpenSSL软件包openssl,安装了这个软件包之后,我们可以做这些事情: o Creation of RSA, DH and DSA Key Paramet ...
- boost 轻量级信号量
#include <boost/thread/condition_variable.hpp> #include <boost/thread/mutex.hpp> #in ...
- protected的一些功能
java的访问限制有private.protected.public.这里只想进一步认识一下protected. 我对protected有4个疑问: 1,在相同包中,是否可以调用其它类的protect ...
- android ble蓝牙开发略解
Android 蓝牙4.0开发 1. 权限和相关属性 “android:required="true"表示apk只有在具有bluetooth_le属性的系统里运行,这个4.3之前 ...
- adb logcat 命令行用法
作者 :万境绝尘 转载请著名出处 eclipse 自带的 LogCat 工具太垃圾了, 开始用 adb logcat 在终端查看日志; 1. 解析 adb logcat 的帮助信息 在命令行中输入 ...
- VS2010+QT4.8.5 +FastReport教程
如需转载请标明出处:http://blog.csdn.net/itas109 採用QT 的QAxObject方式执行FastReport特别麻烦,并且无法在编译的时候知道代码是否正确,并且大部分的函数 ...
- thinkphp 设置跨域请求
场景:我的本地网页服务器无法访问本地的接口服务器接口提示一下错误:大致意思是:是一个跨域请求我的没有访问该地址的权限(接口服务器采用的是PHP编写) XMLHttpRequest cannot loa ...
- javascript 中 事件流和事件冒泡
一.事件流 是描述页面接受事件的顺序,IE 使用的是时间冒泡流;而Netscape的事件采用的是事件捕获流.1.事件冒泡JS 和 HTML是通过事件的方式实现交互.事件冒泡 开始元素,将事件逐级传递, ...
- 基于visual Studio2013解决C语言竞赛题之1089牛虎过河
题目 解决代码及点评 /************************************************************************/ /* ...
- Shell 输入/输出重定向
大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回到您的终端.命令通常从标准输入的地方读取输入,默认是终端.标准输出,默认情况下是终端. 重定向命令列表如下: 命令 说明 comm ...