Keil5調試過程中遇到的一些警告和錯誤


作者:struct_mooc 博客地址:https://www.cnblogs.com/structmooc/p/11318666.html

最近用keil5調試代碼出了一些警告與錯誤,整理如下:
1.warning: #1295-D: Deprecated declaration run_c - give arg types

void run_c();//原函數
void run_c(void);//改正后

對比前面聲明的函數,發現是括號少了一個void,因為我的函數是不帶參的,不加void會有警告的,往括號里加了void之后,重新編譯之后警告消失。
2.warning: #940-D: missing return statement at end of non-void function "Gray_Delay_Run40"

int Gray_Delay_Run40(u16 i)//原函數
{
	while(i -- )
	{
		delay_ms(1);
		Gray_Run40();
	}
}

int Gray_Delay_Run40(u16 i)//改正1
{
	while(i -- )
	{
		delay_ms(1);
		Gray_Run40();
	}
    return 0;
}

void Gray_Delay_Run40(u16 i)//改正2
{
	while(i -- )
	{
		delay_ms(1);
		Gray_Run40();
	}
}

因為我函數是int型的,是需要有返回值,但是我沒有return,加入return 0;之后重新編譯警告消失。或者直接把int改成void,同樣編譯后警告消失。

3.warning: #177-D: variable "a" was declared but never referenced

s32 a =	50;//原函數
//s32 a = 50;//改正后

因為我定義了一個變量准備在后面用到,但是后面直接用數字代替了,沒有用到,將這個變量注釋后,重新編譯警告消失。

4.warning: #177-D: function "Delayms" was declared but never referenced

static void Delayms(u16 i)
{
    ...
}

//static void Delayms(u16 i)    //改正后
//{
//    ...
//}

這里和第3個錯誤差不多,因為我定義了一個函數准備在后面用到,但是后面沒有用到,將這個函數注釋后,重新編譯警告消失。

5.warning: #128-D: loop is not reachable
這個警告的意思是我無法跳出這個循環,我跳到這行看,發現的確少了一個break,加入之后重新編譯,警告消失!

6.error: At end of source: #67: expected a "}"
這個錯誤很明顯,就是說少了一個括號,因為我是一部分一部分調試的,調試完一部分注釋,最后全部恢復優化,就報了這個錯誤,至於在哪里不知道,因為一點錯誤直接跳轉到最后一行,但是我這個循環里面有上千條代碼,一條一條慢慢過去找不現實。解決辦法是二分法查找,先注釋上半部分代碼,沒了錯誤,那肯定就是在上半部分少了"}",繼續二分法,最后幾十行看看就知道錯在哪里了,加上括號,重新編譯錯誤解決!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM