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