1. 程式人生 > >Keil常見錯誤匯總及處理方式

Keil常見錯誤匯總及處理方式

截斷 兼容 turn 如果 直接 atp pat include 需要

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" require.async([‘wkcommon:widget/ui/lib/sio/sio.js‘], function(sio) { var url = ‘https://cpro.baidustatic.com/cpro/ui/c.js‘; sio.callByBrowser( url, function () { BAIDU_CLB_fillSlotAsync(‘u2845605‘,‘cpro_u2845605‘); } ); });

解釋: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 解釋:文件最後一行缺少一新行。

(window.cproArray = window.cproArray || []).push({ id: "u3054369" });

影響:避免當被include的文件展開時,前一個文件的最後一行與後一個文件的第一行直接連接成一行,造成錯誤。

改正:一般一個.c .h文件,要在最後留一個空行。

技術分享圖片

技術分享圖片

技術分享圖片

Keil常見錯誤匯總及處理方式