|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
關(guān)于switch...case的級聯(lián)返回問題!請各位大蝦指導(dǎo)! |
| 作者:ccjchen 欄目:ARM技術(shù) |
SWITCH (keyin()) { case 24: SendCMD(0x00); delay(100); put_str(0,0x80,chen[8],8); put_str(0,0x88,chen[9],8); SWITCH (keyin()) { case 25: //在這里返回到第二級應(yīng)該怎么寫呢? default: break; } break; case 25: SendCMD(0x00); delay(100); put_str(0,0x80,chen[10],8); put_str(0,0x88,chen[11],8); break; default: break; } |
| 2樓: | >>參與討論 |
| 作者: 平常人 于 2007/4/25 21:21:00 發(fā)布:
第二級在哪里呀?用break不行嗎? |
|
| 3樓: | >>參與討論 |
| 作者: ccjchen 于 2007/4/25 22:16:00 發(fā)布:
下面說的清楚些,用break? 我用 SWITCH...case 做 lcd 的級聯(lián)菜單,當(dāng)如果我在第三級菜單返回到第二級應(yīng)該怎么辦呢?(我的程序在上面,其中第一級省略了) SWITCH (keyin())//第二級 { case 24: SendCMD(0x00); delay(100); put_str(0,0x80,chen[8],8); put_str(0,0x88,chen[9],8); SWITCH (keyin())//第三級 { case 25: //在這里返回到第二級應(yīng)該怎么寫呢? default: break; } break; case 25: SendCMD(0x00); delay(100); put_str(0,0x80,chen[10],8); put_str(0,0x88,chen[11],8); break; default: break; } |
|
| 4樓: | >>參與討論 |
| 作者: 平常人 于 2007/4/25 22:30:00 發(fā)布:
還是沒搞清楚你要返回哪里 在內(nèi)層的case 25轉(zhuǎn)到外層的case 25,還是轉(zhuǎn)到外層的SWITCH,還是跳出外層的SWITCH? SWITCH...case即不是循環(huán)語句,也不是goto語句,除了繼續(xù)向下執(zhí)行,不可以返回或轉(zhuǎn)向到任何地方。 況且,“返回”只可能用于子程序“返回”調(diào)用它的上一層主程序,其他地方都不能用“返回”這個(gè)說法。 |
|
| 5樓: | >>參與討論 |
| 作者: jxc827 于 2007/4/25 22:30:00 發(fā)布:
return 是不是可以? |
|
| 6樓: | >>參與討論 |
| 作者: dengm 于 2007/4/25 22:48:00 發(fā)布:
這里用goto 比較好 |
|
| 7樓: | >>參與討論 |
| 作者: hiberhe 于 2007/4/25 23:19:00 發(fā)布:
一般我覺得不要這么寫為好 我極不喜歡SWITCH嵌套,這樣還不如搞個(gè)函數(shù)來得直觀! |
|
| 8樓: | >>參與討論 |
| 作者: xwj 于 2007/4/25 23:35:00 發(fā)布:
你這樣寫的話用goto比較好,但有不用goto的寫法 那就是記錄在哪一層,同一鍵分層處理 |
|
| 9樓: | >>參與討論 |
| 作者: ccjchen 于 2007/4/26 8:01:00 發(fā)布:
就是lcd多級菜單如何退回上一級,用goto語句如何實(shí)現(xiàn)呢? 大哥幫寫一兩句讓我看看好嗎? |
|
| 10樓: | >>參與討論 |
| 作者: 平常人 于 2007/4/26 8:12:00 發(fā)布:
實(shí)現(xiàn)多級菜單最好用狀態(tài)機(jī),每個(gè)菜單的每個(gè)選項(xiàng)對應(yīng)一個(gè)狀態(tài) 列出所有菜單、所有選項(xiàng),畫出完整的狀態(tài)機(jī),并畫出每個(gè)狀態(tài)的轉(zhuǎn)換關(guān)系和轉(zhuǎn)換條件,做好這些功課之后再寫程序,所有事情就變得順其自然了。 |
|
| 11樓: | >>參與討論 |
| 作者: luhuaren 于 2007/4/26 17:30:00 發(fā)布:
re SWITCH (keyin())//第二級 { case 24: SendCMD(0x00); delay(100); put_str(0,0x80,chen[8],8); put_str(0,0x88,chen[9],8); SWITCH (keyin())//第三級 { case 25: //在這里返回到第二級應(yīng)該怎么寫呢? default: break; } break; case 25: SendCMD(0x00); delay(100); put_str(0,0x80,chen[10],8); put_str(0,0x88,chen[11],8); break; default: break; 思路有問題!菜單不是象你這樣編的, SWITCH(menu_status) { case 24: SWITCH(keyin()) { case 0: menu_status = xxx; break; case 1: menu_status = xxx; break; default: break; } break; case 25: break; } |
|
| 12樓: | >>參與討論 |
| 作者: ccjchen 于 2007/4/26 19:50:00 發(fā)布:
我這里的意思是同一按鍵在兩級中使用 |
|
| 13樓: | >>參與討論 |
| 作者: ccjchen 于 2007/4/26 23:03:00 發(fā)布:
11樓這位大哥寫的我看不懂啊,能否給解釋一下? |
|
| 14樓: | >>參與討論 |
| 作者: yuanjian79 于 2007/4/26 23:10:00 發(fā)布:
break僅僅是跳出屬于它的一個(gè)SWITCH。 break僅僅是跳出屬于它的一個(gè)SWITCH。別把概念搞混淆了。和菜單的級沒什么關(guān)系。 |
|
| 15樓: | >>參與討論 |
| 作者: biao.l 于 2007/4/27 18:24:00 發(fā)布:
我都認(rèn)為搞下級菜單弄成函數(shù)比較好 我都認(rèn)為搞下級菜單弄成函數(shù)比較好,你這樣嵌套,不直觀 |
|
| 16樓: | >>參與討論 |
| 作者: ccjchen 于 2007/4/28 8:03:00 發(fā)布:
樓上的哪位大哥能否把寫過的程序發(fā)給我一份呢? 我的油箱ccjchen2005@126.com,萬分感謝! |
|
| 17樓: | >>參與討論 |
| 作者: hebeijiang 于 2007/4/28 8:14:00 發(fā)布:
建議改變方案,多級菜單可以考慮用指針來做,類似堆棧。 |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |