首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

这段代码回到哪里去了

2012-08-31 
这段代码返回哪里去了?void transmit_Mbusdata(U8 len, U8 *payload, U8 ciField){if(uMBusNetRole MBU

这段代码返回哪里去了?
 
void transmit_Mbusdata(U8 len, U8 *payload, U8 ciField)
{

  
  if(uMBusNetRole == MBUS_NET_ROLE_CONCENTRATOR)
  {
  if(uTemp>0)
  {
  if(uCount >0) //number of router 
  {
  //若干代码1
  return; //返回到主调函数吗?
  }
  }
  }
  else
  {
  frame.a_field[5] = MA_FIELD[7];
  }

//若干代码2

}

 

如上的代码结构,当这个函数被调用以后,”若干代码1“被执行后,这个return是返回到主调函数吗?
为什么执行了”若干代码1“之后又执行了”若干代码2“?这个return是怎么执行的。

求指教

 


 
  
  
 
 
 

[解决办法]
理论上说,“若干代码1”被执行完之后,这个函数应该就结束了,因为return语句可以把一个函数直接结束调。这时候,应该会退回到调用这个函数的地方,如果是在主函数里面调用的话,应该是退回到主函数。
[解决办法]
若干代码1里面有递归调transmit_Mbusdata吧
[解决办法]

探讨

用仿真器单步调试的,代码1还有3个函数没有执行直接执行代码2的一部分。

完全不符合逻辑,除非是这个跟踪调试出错了。

[解决办法]
main() 

……; 
return; //这个时候return返回 直接main函数结束 不执行以后代码
……; 


如果: 
main() 

…… 
abc(); <-----------| //此时abc已经执行完毕 该执行下面的语句
def();
……

abc()
{
……
return;//到上面箭头指向的位置
…… 
}

return 函数执行完毕 返回这个值
break 跳出一个循环体 比如 while(1){break;} while只进入一个
continue 继续执行下一次循环体

while(1)
{
continue;
cout<<"ABC"<<endl;
}

这个时候 while循环会是死循环 但不会输出 ABC 
因为每当 continue的时候 就又跳到while()了
[解决办法]
if(uCount >0) //number of router
{
//若干代码1
return; 
}
return在if里面,如果if就没执行,那不直接去了代码2了?

热点排行