您当前的位置:五五电子网电子知识电子学习基础知识电脑-单片机-自动控制程序编写善用Warning检测 正文
程序编写善用Warning检测

程序编写善用Warning检测

点击数:7364 次   录入时间:06-11 08:41:01   整理:http://www.55dianzi.com   电脑-单片机-自动控制

  程序编写完毕后需要通过编译使C语言或汇编语言转化成机械语言,编译的过程同时也是检查是否有错误的过程,而编译过程中的信息将出现在Build Output上,Error(s)代表语法上的错误,这个基本上用过Keil的人都知道,如果出现这种错误则无法完成编译,Build Output窗口自动出现错误报告,此时必需修复好所有的错误才能编译成功。双击错误报告行,可以定位到出错的源程序相应行。Warning(s)代表的是警告,说明源程序中存在问题,但是并不会做成致命的错误令程序无法运行。它依然能通过编译生成HEX也就是机械码。举个例子:

4289

  以上程序编译后结果就会出现“2 Waming(s)”,这警告到底是什么意思呢?打开Build Output我们从delay和key可以得知其中里面并没有调用delay0和key0函数的语句,由此可以得出编译器警告的原因。但是笔者把程序下载到开发板上时运行正常,并没有发现有异常的情况。因为警告并不会影响程序的运行,久而久之只要编译正常笔者都不太理会,于是乎有了以下一个例子。

45755

7586

  这是一个AD转换数码管显示的程序,笔者下载到开发板调试后发现不正常,显示的数值全是乱码。我尝试使模拟输入量发生变化来测试,结果显示的数值虽然仍为乱码但很明显看到数值在变化,这也说明AD转换过程是成功的,只是输出显示数值上产生错误。后来我尝试许多方法多方检查仍找不到原因,正当我百思不得其解时无意中发现编译后Build Output显示“10  Warning(s)”,初时没有太在意,原以为是某些函数没有调用,但仔细一想没理由有那么多呀?!仔细查看错误的出外竟然全是tiao,这时我才明白过来,原来我在设置数组时缺少了常量表达式,经过修改后显示数值终于正常了。,一个小小的疏忽就很有可能使调试陷于盲点死区里面,我们除了平时多加强程序编写能力外还应多细心留意观察。
  
  另外在关于编译、链接、工程设置的工具栏中,有三个关于编译的按钮是我们常用的,第一个是Translate:编译或汇编当前文件。第二个是Build:建立目标文件。第三个是Rebuild:重建全部。当笔者尝试用第一个按钮编译上述程序时BuildOutput区显示“0 Waming(s)”,而第二、第三个按钮则会出现“10 Waming(s)”。
  
  从这儿来看,我们在编译使用Build或Rebuild会更容易发现~些潜在的问题,而第三个按钮重建全部,它的意思是对工程中的所有文件进行重新编译、汇编处理,然后再进行链接产生目标代码。使用这一按钮更加可以防止由于一些意外的情况(如计算机系统日期不正确)造成的源文件与目标代码不一致。




本文关键字:检测  程序编写  电脑-单片机-自动控制电子学习 - 基础知识 - 电脑-单片机-自动控制