原创 Keil的常见编译警告

2013-3-24 15:56 2892 14 15 分类: 消费电子

 

1、
warning:  #767-D: conversion from pointer to smaller integer
解释:将指针转换为较小的整数
影响:可能造成的影响:容易引起数据截断,造成不必要的数据丢失。如果出现bug,很难调试。
改正:尽量避免这种转换,避免不了要确定转换的数据不会引起数据丢失。
 
2、
 warning:  #177-D:variable "i" was declared but never referenced
解释:变量i定义了,但是没有使用
影响:没有使用的变量,很容易提高代码出错的概率,还浪费了一些栈空间。
改正:对于这个警告,感觉应该修改代码直到没有。确定每一个变量都用到了,没有用到的注释掉,如果需要存在则在函数中调用下。
 
3、
 warning:  #188-D: enumerated type mixed with another type
解释:枚举类型混合了其他类型
影响:如果值超过了枚举类型的值,可能造成数据丢失。
改正:尽量避免这样的操作。
 
4、
warning:  #223-D: function "Set_RX8025_INT" declared implicitly
解释:Set_RX8025_INT函数使用前没有显示声明。
影响:具体影响不是很清楚。
改正:在使用前显示声明下。
 
5、
warning: C3017W: i may be used before being set
解释:变量i或许在赋值前使用
影响:很有可能是漏掉了,某些情况,可能造成使用变量的随机值。
改正:在使用前将变量赋初值,对于这种警告,尽量消除。
 
6、
warning:  #167-D:argument of type "uint8_t *" is incompatible with parameter of type "const char *restrict"
解释:uint8_t *类型的参数与const char * restrict类型的参数不兼容。参数传递时,不同类型的警告。
影响:可能提高代码的bug率。
改正:首先避免这样做,其次如果避不开要详细检查传入的参数。
 
7、
warning:  #69-D: integer conversion resulted in truncation
解释:整数转换导致数据截断
影响:可能造成数据丢失,出现错误。
改正:关于这种警告,应该详细考虑。确定转换都在预期的结果内。
 
8、
warning:  #186-D: pointless comparison of unsigned integer with zero
解释:无符号整形和0的无意义比较
影响:一个潜在的问题,判断无符号数大于等于0。由于无符号数没有负数,这种判断恒为真。
改正:详细查看代码的意图,消除这样的判断。
 
9、
warning:  #940-D: missing return statement at end of non-void function "fun1"
解释:非void型函数缺失返回语句。有返回值的函数,缺少了return语句。也有可能是在函数体中有但是最后一行没有。
影响:不是很了解。
改正:在非void类型函数的最后一行添加return语句。
 
10、
warning:  #111-D: statement is unreachable
解释:语句执行不到
影响:由于前边的代码造成此段代码,永远不会执行到。
改正:应该查看此种警告,确定是我们需要的。并且尽量将此种警告消除。
 
11、
warning:  #1-D: last line of file ends without a newline
解释:文件最后一行缺少一新行。
影响:避免当被include的文件展开时,前一个文件的最后一行与后一个文件的第一行直接连接成一行,造成错误。
改正:一般一个.c .h文件,要在最后留一个空行。
PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

m5802677_287752981 2013-3-26 08:22

thank
相关推荐阅读
catch2000 2015-07-19 11:44
信号线小电阻的作用
在一块新的PCB上,测试系统能否正常运行的时候,发现系统上电后没有正常启动。  系统框图如下:   在上电的时刻,CPU A(GPIO电平2.6V)会向串口发送启动日志数据,CPU A启动后,...
catch2000 2015-07-05 17:04
协议设计中ACK机制的影响
在TCP/IP中,延时ACK和Nagle算法。  TCP为了同时处理成块数据(通常为512字节的用户数据)和交互数据(通常用户数据比较少,例如不大于10个字节),采用了延时ACK和Nagle算法...
catch2000 2015-05-23 15:48
话说物联网操作系统
最近好多家都宣布推出自己的物联网操作系统。   1. Google将要在Google I/O大会发布的Brillo; 2. 三星推出的Artik芯片搭载Mentor Graphics的...
catch2000 2015-03-31 23:52
不要采用异或来交换两个变量
在进行两个变量的时候,经常会看到有些书误人子弟的推荐使用异或的方式: 方式一 {   x = x ^ y;   y = x ^ y;   x = x ^ y; } 而不是...
catch2000 2014-10-09 07:28
为什么要测试先行
在产品的研发过程中,测试一项至关重要。不论是软件还是硬件。   软件的测试先行,在研发过程中,就做到质量的保证,因为在出现Bug的时候,容易定位Bug,而且即使是在客户端出现Bug,也能够...
catch2000 2014-10-09 07:26
C语言的面向对象编程(一)
一、前言 对于编程而言,重要的是解决问题的方式,而不是语言本身。面向对象与面向过程是解决问题和思考问题的方式。C语言常说是面向过程开发的语言,因为其缺少很多对于面向对象特性的支持。但,这并不影...
EE直播间
更多
我要评论
1
14
关闭 站长推荐上一条 /3 下一条