|
問題1:有什么更好的方案跳出雙重循環(huán),例如在for循環(huán)里面有個while循環(huán)等待某個位變化,但是怕被干擾了死在while循環(huán)里于是在while循環(huán)里計數(shù):
方案1: 用goto: while(判斷){ if(i++>30000) goto xxx} 感覺非常方便,但老師和一些書籍都說的最好不要用goto
方案2: while(判斷){ if(i++>30000) {i1=1; break;} }
if(i1==1) break; //(在這跳出for循環(huán))
請教各位還有什么方法跳出雙層循環(huán)。
問題2:直接跳入函數(shù)好還是,打開函數(shù)入口好?
例如按鍵掃描程序,在獲取鍵值后是直接進入 KEY_Deal() //假設(shè)這個是按鍵處理程序
方案2: if(SWITCH==0;) return;//這是主程序掃描程序之一,獲鍵值后賦值SWITCH,打開按鍵處理入口,讓單片機掃過去處理鍵值然后下一句是
KEY_Deal();
我的理解是方案2能減少堆棧,并且在較為簡單的主程序里不會影響處理按鍵速度。
問題3: 包含過多.h文件會增加代碼長度嗎?
我現(xiàn)在是用教程的方法,包含一個例如叫g(shù)lobal.h文件,在這個文件里包含工程用到的所有的.h文件,然后所有的.c文件只需包含這個global.h就夠了,我看了別人的程序是每個.c文件里包含用到的.h文件,用global.h方案會增加代碼長度嗎,還是會出現(xiàn)其他問題?感覺十分方便。
問題4: 我想先在第一次上電時檢查FLASH的某些位置(如0x8555之類任意的)數(shù)據(jù)是否是自己賦值,然后在程序在第一次上電時往這些flash位置寫入多個數(shù)據(jù),這么做是想防止復(fù)制燒錄文件,這種方法可行嗎?對程序加密不是很懂,望指教。
目前在學(xué)習(xí)方向是精通C和了解各種電子元器件和電路,下一步方向跑嵌入式系統(tǒng),學(xué)習(xí)ARM機和Linux系統(tǒng)。想法有什么不對請前輩指教下
|
評分
-
查看全部評分
|