欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4607|回復: 2
收起左側

KEIL編程軟件中,void函數中的return使用問題,求師傅們解答

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

如果程序寫成上述形式,用串口助手調試,對從機發0x01+數據,2個字節,程序不能對外發送數據(程序為從機程序),但是如下改下如下:
//串口發送函數
void UartDriver()
{        
        if(flagFrame)
        {
                flagFrame=0;
                UartReceive();
                if(buf[0]==0x01)                    //地址不相符,直接跳出,buf[0]字節代表地址                        
                {        
                     switch(buf[1])
                    {
                        case 0x12:PowSta=buf[1];break;
                        case 0x13:PowSta=buf[1];break;
                        default:break;
                    }
                }
                ScanKey();
                KeyCode();
                UartSend();                                                               
        }
}

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

使用道具 舉報

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

使用道具 舉報

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

在上述含有return的程序中,如果return執行的話,應該是跳出整個UartDriver函數,是嗎?這正是我想達到的目的.
回復

使用道具 舉報

ID:365802 發表于 2019-3-29 09:57
看帖子的同時自己也學習.
continue: 結束本次循環. 無參數
break:      結束本層循環, 可加參數(層數), 默認1, 如果為2, 則表示跳出兩層循環.
return:    結束本方法(函數), 可加參數, 參數即為函數返回值.


資料來自: https://www.cnblogs.com/yangdabao/p/6172210.html

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

本版積分規則

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

Powered by 單片機教程網

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