这段代码返回哪里去了?
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吧
[解决办法]
[解决办法]
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了?