| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1460 人关注过本帖
标题:求教函数体内出现多个return的情况
只看楼主 加入收藏
cocobat
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-7-19
收藏
 问题点数:0 回复次数:5 
求教函数体内出现多个return的情况
求教大家一个函数:
程序代码:
   U8 retry=0;
   U8 i;
   Ctrl_status status;

   // Possibility to ignore the disk check. Used to take time during multi read/write access
   if( g_b_no_check_disk )
      return TRUE;

   if( 0xFF == fs_g_nav.u8_lun )
   {
      fs_g_status = FS_ERR_HW;
      return FALSE;                                // No device selected
   }

   for( retry=0 ; retry<100 ; retry++ )
   {
      // Check device
      status = mem_test_unit_ready( fs_g_nav.u8_lun );
      if( CTRL_GOOD       == status )
         return TRUE;                              // drive ready
      
      //* HERE error or state change
      // Clean all navigator datas which use this device
      fs_g_nav_fast.u8_type_fat = FS_TYPE_FAT_UNM; // By default the fat isn't mounted
      Fat_file_close;                              // By default the file is not open
搜索更多相关主题的帖子: 函数 return 
2009-07-19 10:40
cocobat
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-7-19
收藏
得分:0 
此代码中出现多个return,我在调试过程中,发现g_b_no_check_disk 的值为1,所以应该return TRUE,但是后面的语句仍然被执行了for( retry=0 ; retry<100 ; retry++ ){},这是怎么回事,难道return不是这个函数的最后执行语句?

谢谢了。
2009-07-19 10:45
edward9092
Rank: 2
等 级:等待验证会员
帖 子:329
专家分:59
注 册:2009-1-5
收藏
得分:0 
回复 2楼 cocobat
return 后就退出程序或函数了吧。
2009-07-19 11:35
cocobat
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-7-19
收藏
得分:0 
是啊,应该是这样,但是在线调试的时候就不退出了,有点晕了。
2009-07-19 13:20
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 
回复 4楼 cocobat
你在
   if( g_b_no_check_disk )
      return TRUE;
这地方设断点,然后单步走,你看到后面被执行应该是先返回又被调用
2009-07-19 13:53
mfh
Rank: 6Rank: 6
等 级:侠之大者
帖 子:179
专家分:411
注 册:2009-5-31
收藏
得分:0 
楼主能不能将这个函数的全部代码粘上呢??
2009-07-19 16:30
快速回复:求教函数体内出现多个return的情况
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015407 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved