硬汉嵌入式论坛

 找回密码
 立即注册
查看: 133|回复: 1
收起左侧

[技术讨论] 这个怎么一直会返回0X0B这个值

[复制链接]

24

主题

58

回帖

130

积分

初级会员

积分
130
发表于 2024-4-24 16:51:53 | 显示全部楼层 |阅读模式
[C] 纯文本查看 复制代码
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;
        }
}


调用关系
[C] 纯文本查看 复制代码
_ejection_start_res=_sys_ejection_start();


下载.png

回复

使用道具 举报

24

主题

58

回帖

130

积分

初级会员

积分
130
 楼主| 发表于 2024-4-24 17:28:07 | 显示全部楼层
解答:如果函数声明了有返回值类型,但函数内部没有显式地返回值,则返回值是不确定的,取决于编译器和执行环境。在大多数情况下,这种情况下返回的值是不确定的,可能是之前在内存中存储的值,也可能是随机的。因此,应该始终确保函数内部在所有路径上都有返回语句来避免此类问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-5 22:19 , Processed in 0.162869 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表