c编写的程序中提示error C141: syntax error near '=',不知道是不是antlr 语法编写规则错误,麻烦各位帮看看?多谢!

程序编译时提示错误解决_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
程序编译时提示错误解决
上传于||文档简介
&&程​序​编​译​时​提​示​错​误​解​决
大小:3.74KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢Keil C 中的一些ERROR和WARNING
Keil C 中的一些ERROR和WARNING
1.&LAB100.C(12): error C216: subscript on non-array or too many dimensions原程序如下:#include &reg51.h&& #include &intrins.h&void delay(int);unsigned char code dis_code[8]={0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a};main()&&&&& {&int i,j;&P2=0&while(1)&{&P2=0x7f;&&for(i=0;i&8;i++)&&&& {&P0=dis_code[i];&&& &&P2=_crol_[j,1];&&&j=P2;&&&delay(1);&&& &&&& }&}}void delay(int x){&&for(i=0;i&x;i++);}问题在于P2=_crol_[j,1];应该改为P2=_crol_(j,1);
2.&从网上COPY的程序执行类似的功能,有时候如果现象没出现,或者不明显,可以调整下延迟函数。
3.&数码管的扫描显示0—7,延迟函数的延迟时间在1ms左右,是通过人眼的视觉暂留而产生的现象,&如果延迟函数设置的太大,则看不到持续显示0—7的现象。
4.&用KEILC51调试程序时,出现错误提示为“unprintable character 0XA1 skipped”用KEILC51调试程序时,出现错误提示为“unprintable character 0XA1 skipped”的问题。输入法的问题。在程序行输入中文模式下标点符号,不会显示,但是会出现标题这样的问题。打上//马上就能看到没有显示的标点符号
5.&*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS&SEGMENT: ?PR?_COMPARE?TESTLCD说明:程序中有些函数(或片段)以前(调试过程中)从未被调用过,或者根本没有调用它的语句。这条警告信息前应该还有一条信息指示出是哪个函数导致了这一问题。只要做点简单的调整就可以。不理它也没什么大不了的。解决方法:去掉COMPARE()函数或利用条件编译#if …..#endif,可保留该函数并不编译。
6.&LAB99.C(19): error C141: syntax error near '{', expected 'const'程序如下:#include&reg51.h&#include&intrins.h&sbit LEDP=P1^0;umain(){&TMOD=0x01;&TH0=0x3C;&TL0=0xB0;&counter=0x0A;&EA=1;&&&& &ET0=1;&&&& &TR0=1;&&&& &while(1)&&& &{};}
void timer0_int(void) interrupt {&TH0=0x3C;&TL0=0xB0;&counter--;&&&& &if((counter)!=0)&&&& &{&&&& counter=0x0A;&&&&&&&&&&&&& LEDP=~LEDP;&&&& &}}问题在中断函数的写法上,C下面51的中断函数要这么写:void timer0_int(void) interrupt&&&&& N using M其中的N是不同中断对应的中断号,一般单片机的书上都有说明的,M是这个中断函数在存储空间中所占的bank,一般不要和main函数的一样就可以了,而main函数的在bank0,那么针对51单片机,这个M可以为1,2,3 &7.&C51编译警告“*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL”
&*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
&&& SYMBOL:& ?C_START
&&& MODULE:& .STARTUP.obj (?C_STARTUP)
&*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
&&& SYMBOL:& ?C_START
&&& MODULE:& .STARTUP.obj (?C_STARTUP)
&&& ADDRESS: 000DH
&&&&&&&& 如果你在用C51编译器出现上面的警告,并且找遍了网上也没能找出个究竟时,你是否觉得这个问题很难,难得以至于没人能回答呢?
&&&&&&& 其实这个只是初学者和粗心者才会犯的错误:没把C文件添加到项目中!
///另外,还有可能是因为存在没有被调用的已经定义的函数。
本文来自CSDN博客,转载请标明出处:
8.&*** WARNING L15: MULTIPLE CALL TO SEGMENT***原因Warning 15向我们表明了linker发现了一个函数,这个函数不仅在main code里被调用了,而且在ISR(或者被ISR调用的函数中)被调用了。或者是被同时被多个ISR同时调用了。
这样会产生一个问题,就是在此函数不是一个可重入函数,而当此函数已经在执行时它可能被另一个ISR所调用。这样就会导致结果是可变的而且很可能会导致一些参数的错误。
另一个问题就是本地变量和参数所使用的内存可能被其他函数的内存覆盖。如果函数是由中断所调用的,则此函数的内存就会被使用。这会引起其它函数的内存错误。
举例来说,对于你的第一个警告,WRITE_GMVLX1_REG是会被多个root所调用。其被定义在D_GMVLX1.C或者D_GMVLX1.A51中。他不仅会被ISR(或者被ISR调用的函数)而且也会被MAIN.C中的VSYNC_INTERRUPT函数所调用。解决办法:&(1).主程序调用该函数时禁止中断,可以在该函数被调用时用#pragma disable语句来实现禁止中断的目的。必须使用OVERLAY指令将该函数从覆盖分析中除去。 (2).复制两份该函数的代码,一份到主程序中,另一份复制到中断服务程序中。 (3).将该函数设为重入型。例如: &void myfunc(void) reentrant { & ... &}
&& 这种设置将会产生一个可重入堆栈,该堆栈被被用于存储函数值和局部变量,用这种方法时重入堆栈必须在STARTUP.A51文件中配置。 这种方法消耗更多的RAM并会降低重入函数的执行速度。
9.&void delay(unsigned char i){& while(i--)&&& {&&&& ;&&& }}main(){& unsigned char i,k;& while(1)& {& i=8;& delay(i);& i=7;& delay(i);& k=10;& }}编译器的意思是我那行程序i=7;没有用,怎么解决这个问题呢 &实际上是被编译了的,调用函数时传递的的确是7。没有写回到i倒是事实,因为编译器认为后面不再用i了,所以就没有回写。
如果你将下面的k=10改成k=i,那么就会将7写回到i,并且keil编译器不会直接使用立即数7,而用一条减1指令,从前面的8减1变成7。
10.& 单片机中_crol_函数的的意思:&_crol_(a,m) 将a循环左移,步进为m
_cror_(a,n) 将a循环右移,步进为n
11.&if(temp-ret&min_value)&{&min_value=temp-&&min_id=i;&&&}LAB06.C(72): error C193: '-': illegal op-type(s)此处需要强制类型转换,因为上面有一定义 unsigned int& ret[50]. unsigned int temp = 0temp和ret不是同一类型数据。
12.&用KEILC51调试程序时,出现错误提示为“unprintable character 0XA1 skipped”的问题。
输入法的问题,在程序行输入中文模式下标点符号,不会显示,但是会出现标题这样的问题,打上//马上就能看到没有显示的标点符号
13.&&#include "stdafx.h"#include"stdio.h"#include"conio.h"int main(int argc, char* argv[]){char a[9][9]={{"","","","*"},{"","","*","*","*"},{"","*","*","*","*","*"},{"*","*","*","*","*","*","*"},{"","*","*","*","*","*"},{"","","*","*","*"},{"","","","*"}};int i,j;printf("%c",a[i][j]);return 0;}&error C242: 'a[][]': too many initializers如果要使用缺省赋值,则前面的每行不能缺省赋值,只能在最后缺省,也就是你可以对前7行进行完全赋值,后两行缺省,却不能每行中缺一些,还缺行.&initializer 初始化
14.&&&&&& Warning 280:’i?unreferenced local variable说明局部变量i 在函数中未作任何的存取操作解决方法消除函数中i 变量的宣呿
15. & Warning 206:’Music3?missing -prototype说明Music3( )函数未作宣告或未作外部宣告所以无法给其他函数调用解决方法将叙述void Music3(void)写在程序的最前端作宣告如果是其他文件的函数则要写成extern void Music3(void),即作外部宣告
16.& Compling :C:\8051\MANN.CError:318:can’t open file ‘beep.h?说明在编译C:\8051\MANN.C 程序过程中由于main.c 用了指令#i nclude “beep.h?但却找不到所致解决方法编写一个beep.h 的包含档并存入到c:\8051 的工作目录中
17.&&&&& Compling:C:\8051\LED.CError 237:’LedOn? already has a body说明LedOn( )函数名称重复定义即有两个以上一样的函数名称解决方法修正其中的一个函数名称使得函数名称都是独立的
18.& ***WARNING 16:UNCALLED SEGMENT,IGNORED FOR OVERLAY PROCESSSEGMENT: ?PR?_DELAYX1MS?DELAY说明DelayX1ms( )函数未被其它函数调用也会占用程序记忆体空间解决方法去掉DelayX1ms( )函数或利用条件编诿if ?.#endif,可保留该函数并不编译
19.& ***WARNING 6 :XDATA SPACE MEMORY OVERLAPFROM : 0025HTO: 0025H说明外部资料ROM 皿025H 重复定义地址解决方法外部资料ROM 的定义如下Pdata unsigned char XFR_ADC _at_0x25 其中XFR_ADC 变量的名称为0x25,请检查是否有其它的变量名称也是定义在0x25 处并修正宿br&
20.& WARNING 206:’DelayX1ms? missing -prototypeC:\8051\INPUT.CError 267 :’DelayX1ms ?requires ANSI-style prototype C:\8051\INPUT.C说明程序中有调用DelayX1ms 函数但该函数没定义即未编写程序内容或函数已定义但未作宣告解决方法编写DelayX1ms 的内容编写完后也要作宣告或作外部宣告可在delay.h 的包含档宣告成外部以便其它函数调甿br& 21.& ***WARNING 1:UNRESOLVED EXTERNAL SYMBOLSYMBOL:MUSIC3MODULE:C:\8051\MUSIC.OBJ(MUSIC)***WARNING 2:REFERENCE MADE TO UNRESOLVED EXTERNALSYMBOL:MUSIC3MODULE:C:\8051\MUSIC.OBJ(MUSIC)ADDRESS:0018H说明程序中有调用MUSIC 函数但未将该函数的含扩档C 加入到工程档Prj 作编译和连接解决方法设MUSIC3 函数在MUSIC C 里将MUSIC C 添加到工程文件中县br&
22.& ***ERROR 107:ADDESS SPACE OVERFLOWSPACE: DATASEGMENT: _DATA_GOUP_LENGTH: 0018H***ERROR 118: REFERENCE MADE TO ERRONEOUS EXTERNALSYMBOL: VOLUMEMODULE: C:\8051\OSDM.OBJ (OSDM)ADDRESS: 4036H说明data 存储空间的地址范围丿~0x7f,当公用变量数目和函数里的局部变量如果存储模式设为SMALL 则局部变量先使用工作寄存器R2~R7 作暂存当存储器不够用时则伿br& 以data 型别的空间作暂存的个数超迿x7f 时就会出现地址不够的现豿br& 解决方法将以data 型别定义的公共变量修改为idata 型别的定乿br& 说明如对编译出错感兴趣的网友能否把你们常遇到皿strong style="COLOR: BACKGROUND-COLOR: #99ff99"&错误信息收集起来并提出最终的解决办法加以归纳以期共享(转自:.cn/s/blog_5f0bed160100cmu9.html)
23.&&&&& keilc51 的编程:&(1)、& 注意程序的输入方法,使用简体中文-美式键盘&(2)、& 拷贝程序是要注意,防止看不到的乱码产生&(3)、& F11、step:以单步执行程序&&&&&&& F10、step over:以过程单步执行程序&(4)、& error :invalid instruction operand&&&&&&& 错误原因为语句不符合语法&&& &&& error: illegal factor&&& error: undefined symbol&&& 拼写错误,需要仔细检查&&& &&& error:syntax error near'void'&&& 语法句法错误&&& 我的错误是void main()前面的一个函数缺少结束的大括号&(5)、& memory window:C、D、I、X,分别代表代码存储空间、直接寻址的片内存储空间、间接寻址的片内存储空间、扩展的外部RAM 空间;数字代表想要查看的地址。例如输入D:0 即可观察到地址0 开始的片内RAM 单元值、键入C:0 即可显示从0 开始的ROM 单元中的值,即查看程序的二进制代码。
本文来自CSDN博客,转载请标明出处:24.&P1是在头文件中定义的
sfr P1=0x90;
这里就是把P1指向实际地址0x90(寄存器地址),这个应该可以理解。
而P1^0的意思就是指P1端口的0位,“^”是个说明符。但是,在C语言的代码里面,不能直接用P1^0,因为“^”这个符号在代码中是运算符,编译器不能识别了。
所以,一般需要重新定义
sbit P1_0=P1^0;
那么,P1_0就可以在代码中代表P1端口的0位了。这里P1_0也可以用其他字符表示,例如
sbit BUSY=P1^0;
还有一个方法直接定义位变量,注意,这里的0x90是位地址
sbit P1_0 = 0x90;
&&&&&&&&&&&
发表评论:
TA的推荐TA的最新馆藏[转]&[转]&[转]&[转]&[转]&[转]&[转]&[转]&[转]&[转]&请高手帮忙看下面C程序错在哪,老说XSQ.C(19): error C141: syntax error near &else&_百度知道求助:c编程提示“syntax error:”_百度知道21ic官方微信-->
后使用快捷导航没有帐号?
查看: 1431|回复: 7
关于Keil uVision4错误提示的问题!请教高手!在线等!谢谢!
&&未结帖(20)
主题帖子积分
中级技术员, 积分 240, 距离下一级还需 60 积分
中级技术员, 积分 240, 距离下一级还需 60 积分
主题帖子积分
专家等级:结帖率:83%
主题帖子积分
中级技术员, 积分 240, 距离下一级还需 60 积分
中级技术员, 积分 240, 距离下一级还需 60 积分
本帖最后由 runbing1314 于
22:06 编辑
两个错误提示,小弟才疏学浅没找到具体错误。请高手指教谢谢!
本帖子中包含更多资源
才可以下载或查看,没有帐号?
主题帖子积分
资深技术员, 积分 311, 距离下一级还需 189 积分
资深技术员, 积分 311, 距离下一级还需 189 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
资深技术员, 积分 311, 距离下一级还需 189 积分
资深技术员, 积分 311, 距离下一级还需 189 积分
看这意思是少了个等号 str [n] = '0';
主题帖子积分
中级技术员, 积分 240, 距离下一级还需 60 积分
中级技术员, 积分 240, 距离下一级还需 60 积分
主题帖子积分
专家等级:结帖率:83%
主题帖子积分
中级技术员, 积分 240, 距离下一级还需 60 积分
中级技术员, 积分 240, 距离下一级还需 60 积分
看这意思是少了个等号 str [n] = '0';
这是太感谢了!那上面那个错误是啥?C:\KEIL\C51\INC\REG52.H(13): error C141: syntax error near 'sfr'
主题帖子积分
资深技术员, 积分 311, 距离下一级还需 189 积分
资深技术员, 积分 311, 距离下一级还需 189 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
资深技术员, 积分 311, 距离下一级还需 189 积分
资深技术员, 积分 311, 距离下一级还需 189 积分
sfr 附近有语法错误
主题帖子积分
助理工程师, 积分 1389, 距离下一级还需 611 积分
助理工程师, 积分 1389, 距离下一级还需 611 积分
主题帖子积分
专家等级:结帖率:40%打赏:0.00受赏:90.00
主题帖子积分
助理工程师, 积分 1389, 距离下一级还需 611 积分
助理工程师, 积分 1389, 距离下一级还需 611 积分
楼上正解!
主题帖子积分
高级技术员, 积分 794, 距离下一级还需 206 积分
高级技术员, 积分 794, 距离下一级还需 206 积分
主题帖子积分
专家等级:结帖率:75%打赏:0.00受赏:2.00
主题帖子积分
高级技术员, 积分 794, 距离下一级还需 206 积分
高级技术员, 积分 794, 距离下一级还需 206 积分
“&”还是“&&”?
过春风十里,皆稷麦青青
主题帖子积分
中级技术员, 积分 119, 距离下一级还需 181 积分
中级技术员, 积分 119, 距离下一级还需 181 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
中级技术员, 积分 119, 距离下一级还需 181 积分
中级技术员, 积分 119, 距离下一级还需 181 积分
“&”还是“&&”?
是&&,不过建议每个表达式加括号
主题帖子积分
主题帖子积分
专家等级:结帖率:94%打赏:106.20受赏:295.00
主题帖子积分
这是太感谢了!那上面那个错误是啥?C:\KEIL\C51\INC\REG52.H(13): error C141: syntax error near 'sfr' ...
应该是同一个错误引起的两个错误提示
欢迎进入& && &21ic TI技术交流1群:(已满),&&21ic TI技术交流2群:
时间类勋章
技术奇才奖章
人才类勋章
技术新星奖章
人才类勋章
时间类勋章
时间类勋章
涓涓之细流
发帖类勋章
终身成就奖章
等级类勋章
坚毅之洋流
发帖类勋章
时间类勋章
技术领袖奖章
人才类勋章
热门推荐 /4}

我要回帖

更多关于 syntax error near 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信