找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4552|回復(fù): 2
收起左側(cè)

KEIL編程軟件中,void函數(shù)中的return使用問(wèn)題,求師傅們解答

[復(fù)制鏈接]
ID:479916 發(fā)表于 2019-3-28 19:55 | 顯示全部樓層 |閱讀模式
     我在用keil u4寫(xiě)單片機(jī)程序的時(shí)候,遇到如下情況(只貼了整個(gè)程序的一部分):
//串口發(fā)送函數(shù)
void UartDriver()
{        
        if(flagFrame)
        {
                flagFrame=0;
                UartReceive();
                if(buf[0]!=0x01)                    //地址不相符,直接跳出,buf[0]字節(jié)代表地址                        
                {
                        return;
                }
                switch(buf[1])
                {
                        case 0x12:PowSta=buf[1];break;
                        case 0x13:PowSta=buf[1];break;
                        default:break;
                }
        
                ScanKey();
                KeyCode();
                UartSend();                                                               
        }
}

如果程序?qū)懗缮鲜鲂问?用串口助手調(diào)試,對(duì)從機(jī)發(fā)0x01+數(shù)據(jù),2個(gè)字節(jié),程序不能對(duì)外發(fā)送數(shù)據(jù)(程序?yàn)閺臋C(jī)程序),但是如下改下如下:
//串口發(fā)送函數(shù)
void UartDriver()
{        
        if(flagFrame)
        {
                flagFrame=0;
                UartReceive();
                if(buf[0]==0x01)                    //地址不相符,直接跳出,buf[0]字節(jié)代表地址                        
                {        
                     switch(buf[1])
                    {
                        case 0x12:PowSta=buf[1];break;
                        case 0x13:PowSta=buf[1];break;
                        default:break;
                    }
                }
                ScanKey();
                KeyCode();
                UartSend();                                                               
        }
}

采用同樣的方法,則可以對(duì)外發(fā)出數(shù)據(jù),搞不明白為什么,求哪位大俠能給解答一下,十分感謝!
回復(fù)

使用道具 舉報(bào)

ID:416287 發(fā)表于 2019-3-28 20:49 | 顯示全部樓層
return:rereturn的剛猛程度大于break,它使程序直接跳出整個(gè)函數(shù),即函數(shù)遇到它后就停止一切執(zhí)行了。后面的程序就執(zhí)行不了,你可以去看一下return break continue的區(qū)別。
回復(fù)

使用道具 舉報(bào)

ID:479916 發(fā)表于 2019-3-29 07:52 | 顯示全部樓層
奮斗的小白熊 發(fā)表于 2019-3-28 20:49
return:rereturn的剛猛程度大于break,它使程序直接跳出整個(gè)函數(shù),即函數(shù)遇到它后就停止一切執(zhí)行了。后面 ...

在上述含有return的程序中,如果return執(zhí)行的話,應(yīng)該是跳出整個(gè)UartDriver函數(shù),是嗎?這正是我想達(dá)到的目的.
回復(fù)

使用道具 舉報(bào)

ID:365802 發(fā)表于 2019-3-29 09:57
看帖子的同時(shí)自己也學(xué)習(xí).
continue: 結(jié)束本次循環(huán). 無(wú)參數(shù)
break:      結(jié)束本層循環(huán), 可加參數(shù)(層數(shù)), 默認(rèn)1, 如果為2, 則表示跳出兩層循環(huán).
return:    結(jié)束本方法(函數(shù)), 可加參數(shù), 參數(shù)即為函數(shù)返回值.


資料來(lái)自: https://www.cnblogs.com/yangdabao/p/6172210.html

本版積分規(guī)則

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

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

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