Y1ng 发表于 2024-4-24 16:51:53

这个怎么一直会返回0X0B这个值

uint8_t _sys_ejection_start(void)
{
      switch (foo)
      {
      case 0:
                {
                        _val_tri_ctr(1);
                        if((p_TV->state!=_OPEN)&&(loop_cnt<=800))
                        {
                              loop_cnt++;
                              HAL_Delay(10);
                        }
                        else
                        {
                              if(p_TV->state==_OPEN)
                              {
                                        loop_cnt=0;
                                        foo=1;
                              }
                              else
                              {
                                        _val_tri_ctr(0);
                                        foo=3;
                                        return 0x01;
                              }
                        }
                }
                break;
      case 1:
                {
                        _bat_charge_ctr(1);
                        HAL_Delay(2000);
                        _pump_ctr(1);
                        loop_cnt=0;
                        foo=2;
                }break;
      case 2:
                {
                        _val_gas_ctr(1);
                        if((p_GV->state!=_OPEN)&&(loop_cnt<=800))
                        {
                              loop_cnt++;
                              HAL_Delay(10);
                        }
                        else
                        {
                              if(p_GV->state==_OPEN)//正常开启
                              {
                                        loop_cnt=0;
                                        foo=3;
                                        return 0x0a;
                              }
                              else
                              {
                                        _val_gas_ctr(0);
                                        _bat_charge_ctr(0);
                                        _pump_ctr(0);
                                        _val_tri_ctr(0);
                                        loop_cnt=0;
                                        foo=3;
                                        return 0x03;
                              }
                        }
                }break;
      case 3:
      {
                return 0xff;
      }break;
      default:
      {
                return 0xff;
      }               
                break;
      }
}

调用关系
_ejection_start_res=_sys_ejection_start();



Y1ng 发表于 2024-4-24 17:28:07

解答:如果函数声明了有返回值类型,但函数内部没有显式地返回值,则返回值是不确定的,取决于编译器和执行环境。在大多数情况下,这种情况下返回的值是不确定的,可能是之前在内存中存储的值,也可能是随机的。因此,应该始终确保函数内部在所有路径上都有返回语句来避免此类问题。
页: [1]
查看完整版本: 这个怎么一直会返回0X0B这个值