打印

程序的任何地方都可以放置return吗?

[复制链接]
2118|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
nevea|  楼主 | 2007-8-14 17:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题!是不是可以在程序的任何地方放置return语句??是不是只要遇到return语句就跳出函数。比如,我下面的写法能否实现我的所想。
如果答案是否定的,我希望高手们能给出建议,谢谢!!
UCHAR I2cWrite(UCHAR num,UCHAR RomAddress)
{

     UCHAR i;
     cli();
     I2cStart();
     I2cWrite8bit(wr_device_add);
     if(I2cTestAck()) 
     {
         IIC_WFg=0x00;
         return IIC_WFg;    
         }
     I2cWrite8bit(RomAddress);
     if(I2cTestAck()) 
     {
          IIC_WFg=0x00;
         return IIC_WFg;  
     }
     for(i=0;i<num;i++)
     {
      
       
         I2cWrite8bit(IIC_Tx_Buf);
         if(I2cTestAck()) 
         {
             IIC_WFg=0x00;
             return IIC_WFg;  
         }
     }
     I2cStop();
     Delay1mS(10);
     IIC_WFg=0xff;
     return IIC_WFg;
     
}

相关帖子

沙发
风...| | 2007-8-14 18:06 | 只看该作者

return语句的作用就是终止当前函数,

程序返回到调用处,根据需要可能返回一个值,但51里的中断不可能带回值哦。

使用特权

评论回复
板凳
computer00| | 2007-8-14 20:04 | 只看该作者

在一个函数内的任何一个地方都可以return。函数外不可以

使用特权

评论回复
地板
杨真人| | 2007-8-14 21:23 | 只看该作者

单从字面来说答案是否定的.

你知道程序任何地方放RETURN的结果吗?感情是一点也不知道!

使用特权

评论回复
5
nevea|  楼主 | 2007-8-15 15:20 | 只看该作者

呵呵,我想我明白了,谢谢楼上几位的解说!

不过,杨真人的‘你知道程序任何地方放RETURN的结果吗?感情是一点也不知道!’,这我似乎还真是不太知道前辈指的是什么?恳请赐教!

谢谢!

使用特权

评论回复
6
杨真人| | 2007-8-16 22:10 | 只看该作者

RE 5楼

程序的任何地方都可以放置return吗?NO
程序的任何地方都可以放置return吗?YES

使用特权

评论回复
7
computer00| | 2007-8-17 08:41 | 只看该作者

主程序也可以随便return返回的。

例如TC里面的主函数,可以接收几个输入参数(例如磁盘路径之类的),你判断这些参数不对之后,就可以return。

使用特权

评论回复
8
dai_weis| | 2007-8-17 09:02 | 只看该作者

呵呵,TC的return之后有操作系统支持着

单片机如果主程序return之后,不知道谁支持,也许是电路板吧?

使用特权

评论回复
9
computer00| | 2007-8-17 09:12 | 只看该作者

不是。编译器支持。很多编译器会在main return之后while(1);

并且我们现在讨论的是“是否可以放return的问题”,事实上,的确是可以放的。

使用特权

评论回复
10
nevea|  楼主 | 2007-8-21 10:56 | 只看该作者

哈哈,

没想到一个如此简单的发问,居然引出那么多深藏的东西。。。。。

受教了!!!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

306

帖子

0

粉丝