找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2510|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

如何跳出雙層循環(huán),加密程序等問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:382526 發(fā)表于 2018-9-6 16:52 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
問題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)。想法有什么不對請前輩指教下

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表