KEIL常见编译错误和警告解决方案汇总

傷城~ 2022-11-11 13:14 1086阅读 0赞

写在开头

本文主要汇总在使用KEIL的开发过程中,遇到的一些编译错误和警告的处理方法,自己作为一个记录,同时分享给各位有缘人,希望有所帮助!!谢谢~

正文

[ warning: #186-D: pointless comparison of unsigned integer with zero … ]

这个警告是因为将一个无符号数与0作比较,比如uint32_t a; if(a>=0)
这种情况很明显,无符号数当然大于或等于0,因此这个比较是毫无意义的,需根据实际情况作修改

[ warning: #223-D: function “Set_RX8025_INT” declared implicitly ]

解释:Set_RX8025_INT 函数使用前没有显示声明。

改正:在使用前显示声明下。

[ warning: #177-D:variable “i” was declared but never referenced ]

解释:变量 i 定义了,但是没有使用

影响:没有使用的变量,浪费了一些栈空间。

改正:对于这个警告, 感觉应该修改代码直到没有。确定每一个变量都用到了, 没有用到的注释掉,如果需要存在则在函数中调用下。

[ warning: #767-D: conversion from pointer to smaller integer ]

解释:将指针转换为较小的整数

影响:可能造成的影响:容易引起数据截断,造成不必要的数据丢失。如果出现 bug,很难调试。

改正:尽量避免这种转换,避免不了要确定转换的数据不会引起数据丢失。

[ warning: #188-D: enumerated type mixed with another type ]

解释:枚举类型混合了其他类型

影响:如果值超过了枚举类型的值,可能造成数据丢失。

改正:尽量避免这样的操作。

[ warning: #111-D: statement is unreachable ]

解释:语句执行不到

影响:由于前边的代码造成此段代码,永远不会执行到。比如while(1);后面的语句行。

改正:应该查看此种警告,确定是我们需要的。并且尽量将此种警告消除。

[ warning: #940-D: missing return statement at end of non-void function “fun1” ]

解释:非 void 型函数缺失返回语句。有返回值的函数,缺少了 return 语句。也有可能是在函数体中有但是最后一行没有。

影响:函数定义不规范,对该函数上层不友好。

改正:在非 void 类型函数的最后一行添加 return 语句。

[ warning: #69-D: integer conversion resulted in truncation ]

解释:整数转换导致数据截断

影响:可能造成数据丢失,出现错误。

改正:关于这种警告,应该详细考虑。确定转换都在预期的结果内。

持续更新…

发表评论

表情:
评论列表 (有 0 条评论,1086人围观)

还没有评论,来说两句吧...

相关阅读