找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2577|回復: 0
收起左側

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

[復制鏈接]
ID:382526 發(fā)表于 2018-9-6 16:52 | 顯示全部樓層 |閱讀模式
問題1:有什么更好的方案跳出雙重循環(huán),例如在for循環(huán)里面有個while循環(huán)等待某個位變化,但是怕被干擾了死在while循環(huán)里于是在while循環(huán)里計數:

方案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:直接跳入函數好還是,打開函數入口好?

例如按鍵掃描程序,在獲取鍵值后是直接進入 KEY_Deal()  //假設這個是按鍵處理程序

方案2:  if(SWITCH==0;)   return;//這是主程序掃描程序之一,獲鍵值后賦值SWITCH,打開按鍵處理入口,讓單片機掃過去處理鍵值然后下一句是
              KEY_Deal();

我的理解是方案2能減少堆棧,并且在較為簡單的主程序里不會影響處理按鍵速度。

問題3: 包含過多.h文件會增加代碼長度嗎?

我現在是用教程的方法,包含一個例如叫global.h文件,在這個文件里包含工程用到的所有的.h文件,然后所有的.c文件只需包含這個global.h就夠了,我看了別人的程序是每個.c文件里包含用到的.h文件,用global.h方案會增加代碼長度嗎,還是會出現其他問題?感覺十分方便。

問題4: 我想先在第一次上電時檢查FLASH的某些位置(如0x8555之類任意的)數據是否是自己賦值,然后在程序在第一次上電時往這些flash位置寫入多個數據,這么做是想防止復制燒錄文件,這種方法可行嗎?對程序加密不是很懂,望指教。

目前在學習方向是精通C和了解各種電子元器件和電路,下一步方向跑嵌入式系統(tǒng),學習ARM機和Linux系統(tǒng)。想法有什么不對請前輩指教下

評分

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

查看全部評分

回復

使用道具 舉報

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表