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