KEIL常见编译错误和警告解决方案汇总
寫在開頭
本文主要匯總在使用KEIL的開發(fā)過程中,遇到的一些編譯錯(cuò)誤和警告的處理方法,自己作為一個(gè)記錄,同時(shí)分享給各位有緣人,希望有所幫助!!謝謝~
正文
[ warning: #186-D: pointless comparison of unsigned integer with zero … ]
這個(gè)警告是因?yàn)閷⒁粋€(gè)無符號(hào)數(shù)與0作比較,比如uint32_t a; if(a>=0)
這種情況很明顯,無符號(hào)數(shù)當(dāng)然大于或等于0,因此這個(gè)比較是毫無意義的,需根據(jù)實(shí)際情況作修改
[ warning: #223-D: function “Set_RX8025_INT” declared implicitly ]
解釋:Set_RX8025_INT 函數(shù)使用前沒有顯示聲明。
改正:在使用前顯示聲明下。
[ warning: #177-D:variable “i” was declared but never referenced ]
解釋:變量 i 定義了,但是沒有使用
影響:沒有使用的變量,浪費(fèi)了一些棧空間。
改正:對(duì)于這個(gè)警告, 感覺應(yīng)該修改代碼直到?jīng)]有。確定每一個(gè)變量都用到了, 沒有用到的注釋掉,如果需要存在則在函數(shù)中調(diào)用下。
[ warning: #767-D: conversion from pointer to smaller integer ]
解釋:將指針轉(zhuǎn)換為較小的整數(shù)
影響:可能造成的影響:容易引起數(shù)據(jù)截?cái)?#xff0c;造成不必要的數(shù)據(jù)丟失。如果出現(xiàn) bug,很難調(diào)試。
改正:盡量避免這種轉(zhuǎn)換,避免不了要確定轉(zhuǎn)換的數(shù)據(jù)不會(huì)引起數(shù)據(jù)丟失。
[ warning: #188-D: enumerated type mixed with another type ]
解釋:枚舉類型混合了其他類型
影響:如果值超過了枚舉類型的值,可能造成數(shù)據(jù)丟失。
改正:盡量避免這樣的操作。
[ warning: #111-D: statement is unreachable ]
解釋:語句執(zhí)行不到
影響:由于前邊的代碼造成此段代碼,永遠(yuǎn)不會(huì)執(zhí)行到。比如while(1);后面的語句行。
改正:應(yīng)該查看此種警告,確定是我們需要的。并且盡量將此種警告消除。
[ warning: #940-D: missing return statement at end of non-void function “fun1” ]
解釋:非 void 型函數(shù)缺失返回語句。有返回值的函數(shù),缺少了 return 語句。也有可能是在函數(shù)體中有但是最后一行沒有。
影響:函數(shù)定義不規(guī)范,對(duì)該函數(shù)上層不友好。
改正:在非 void 類型函數(shù)的最后一行添加 return 語句。
[ warning: #69-D: integer conversion resulted in truncation ]
解釋:整數(shù)轉(zhuǎn)換導(dǎo)致數(shù)據(jù)截?cái)?/p>
影響:可能造成數(shù)據(jù)丟失,出現(xiàn)錯(cuò)誤。
改正:關(guān)于這種警告,應(yīng)該詳細(xì)考慮。確定轉(zhuǎn)換都在預(yù)期的結(jié)果內(nèi)。
持續(xù)更新…
總結(jié)
以上是生活随笔為你收集整理的KEIL常见编译错误和警告解决方案汇总的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FatFs源码剖析(2)
- 下一篇: STM32 调试脚上电默认电平