在学习MODBUS使用armfly例程时,RTU模式下报文解析这里。在收到完整的一帧报文后,需要对g_tModB.RxCount进行清0操作。由于对goto语法的不熟悉。我一直以为只有程序进入了goto err_ret的跳转时。才会执行到最后。实际上,goto只是改变了代码的顺序流,使之能直接跳过一些操作。但是无论是否进入goto条件。都会执行最后err_ret: Label下的内容。后面我在dev-c++进行了例程验证。
#include <stdio.h>
int g_MenuJumpStack[8][2] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int main(void)
{
int i,j;
for(i = 0;i < 8;i++)
{
for(j = 0;j < 2;j++)
{
printf("%d\n",g_MenuJumpStack[i][j]);
}
if(i>3){goto Label;}
if(i>9){goto Label;}
}
printf("%d\n",i);
Label:
printf("enter err!\n");
#if 1 /* 此部分为了串口打印结果,实际运用中可不要 */
printf("feedback\n");
#endif
printf("direct return\n");
}
来源:CSDN
作者:lin__yuan
链接:https://blog.csdn.net/lin__yuan/article/details/104539826