PICC常见错误

发布者:丹青妙手最新更新时间:2020-08-26 来源: eefocus关键字:PICC  常见错误  MPLAB  IDE 手机看文章 扫描二维码
随时随地手机看文章

错误1:变量定义赋值先后顺序问题很重要
开发环境为MPLAB IDE V7.43 + PICC 。如下两种代码书写方式,在补充完整之后,哪一个会编译出错?( flag_sendKeyByte 为全局位变量,已定义过)
A:
flag_sendKeyByte = 0; 
unsign char mbit = 0;
B: 
unsign char mbit = 0; 
flag_sendKeyByte = 0;
使用正常的C语言习惯来看,似乎都没问题,都是赋值,仅仅是先后位置不一样。但是在PIC单片机的编译环境下,A是错误的,B是正确的。
在出现这一编译错误时,我查找了很久。由于初次接触PIC,了解不多,导致走了很多弯路。最后逐行删除代码,逐行修改,最后才发现是次序错了。
PIC 单片机的编译环境要求变量赋值必须在变量定义之后。而不允许在给一个变量赋值后再去定义另一个变量并赋值。似乎是因为编译环境在赋值之前会先处理所有的变量定义。如果检测到一个变量赋值语句则该函数或子程序后面的定义它将不再检查,导致最后编译的时候出现某些变量未定义。
(注:以上这些分析是我自己揣摩的,可能分析的不对,还请高手指正)
可笑的是,编译出错的提示信息却是乱七八糟的,而不是说存在未定义的变量。下面的提示就是我编译时提示的,对一个初学者来说,根据这些提示能找到错误源吗?
Error[000] D:documentsPICtestkeyboardps2.c 387 : probable missing '}' in previous block 
Error[000] D:documentsPICtestkeyboardps2.c 388 : undefined identifier: ch 
Error[000] D:documentsPICtestkeyboardps2.c 388 : constant expression required 
Warning[000] D:documentsPICtestkeyboardps2.c 390 : missing basic type: int assumed 
Error[000] D:documentsPICtestkeyboardps2.c 390 : type redeclared 
Error[000] D:documentsPICtestkeyboardps2.c 390 : identifier redefined: calc_parity (from line 64) 
Error[000] D:documentsPICtestkeyboardps2.c 390 : constant expression required
....
后面还有很多,一直到程序的最后都会提示出错。把A中的写法换成B的写法,编译就成功了。
感觉这个编译环境太不好用了。以前用过C8051F系列的开发工具,那个就好用多了。把这个问题提出来,提醒初学者别犯我这样的错误。
 
————————————————————————————————
C语言中变量的声明必须在一个block的开头 
一个block就是指一对{}大括号包起来的部分 
变量的声明必须紧跟在"{"之后,中间不能夹其它代码。
还有比如for(char i=0; i< 20 ; i++){ do something...},这在有的编译器可以用,有的不行 
这样的写法也是不正确的,会报一个语法错误,一个变量未声明的错误 
如果想用,但是又不想在block的开头去声明这个临时变量i,可以这样做: 
{ //注意这个大括号 
    char i; 
    for(i=0; i< 20 ; i++){ /*do something...*/} 
} //注意这个大括号 

这样保证了声明在block开头的同时,又能使用局部变量而不用到前面去声明


2.在MPLAB IDE下用PICC9.xx版本编译时,为什么我得到一个"(924) missing argument to -O option"错误?

如果你是在用9.xx版本的编译器,你需要在MPLAB IDE的Language toolsuite 选择里选"HI-TECH Universal Toolsuite",而不是HI-TECH PICC
Toolsuite。


这将解决问题。仅仅是在需要用8.xx版本编译时,才能选择HI-TECH PICC Toolsuite。

关键字:PICC  常见错误  MPLAB  IDE 引用地址:PICC常见错误

上一篇:PIC最简约的PWM波形产生程序(PIC16F877A)
下一篇:MPLAB C30安装后没有输入序列号的步骤

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved