OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 14049|回复: 3

关于这个的疑问warning: #940-D: missing return statement at end of non-void function "KEY_Scan"

[复制链接]

40

主题

259

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
459
金钱
459
注册时间
2016-5-19
在线时间
192 小时
发表于 2018-6-29 14:40:09 | 显示全部楼层 |阅读模式
1金钱
u8 KEY_Scan(u8 mode)
{     
    static u8 key_up=1;
    if(mode)key_up=1;         
    if(key_up&&(KEY0==0||KEY1==0||KEY2==0||WK_UP==0))
    {
        delay_ms(10);
        key_up=0;
        if(KEY0==0)return KEY0_PRES;
        else if(KEY1==0)return KEY1_PRES;
        else if(KEY2==0)return KEY2_PRES;
        else if(WK_UP==0)return WKUP_PRES;
    }else if(KEY0==1&&KEY1==1&&KEY2==1&&WK_UP==1)key_up=1;         
     return 0;
}

我把Mini按键例程中的KEY_Scan函数if和else if 加了几个括号。如下

u8 KEY_Scan(u8 mode)
{     
    static u8 key_up=1;
    if(mode)key_up=1;  
   
    if(key_up&&(KEY0==0||KEY1==0||WK_UP==1))
    {
        delay_ms(10);
        key_up=0;
        if(KEY0==0)
        {
            return KEY0_PRES;
        }
        else if(KEY1==0)
        {
            return KEY1_PRES;
        }
        else if(WK_UP==1)
            {
                return WKUP_PRES;
            }
    }
    else if(KEY0==1&&KEY1==1&&WK_UP==0)
    {
        key_up=1;
        
    return 0;
  }   
}
发现报这个warning的错误。我网上查了原因:
解释:非void型函数缺失返回语句。有返回值的函数,缺少了return语句。也有可能是在函数体中有但是最后一行没有。
影响:不是很了解。 
改正:在非void类型函数的最后一行添加return语句。

后来我用调试发现按下WK_UP按键返回值时不时会出现1,按照程序应该始终返回值是3.
这个问题不是很了解,求助下论坛里的大神


最佳答案

查看完整内容[请看2#楼]

else if(KEY0==1&&KEY1==1&&WK_UP==0) { key_up=1; return 0; } 仔细研究研究这里,你加完括号以后跟原程序不一样了。 改成下面这样试试: else if(KEY0==1&&KEY1==1&&WK_UP==0) { key_up=1; } //括号加到这里 return 0;
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

168

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2018-5-14
在线时间
69 小时
发表于 2018-6-29 14:40:10 | 显示全部楼层
else if(KEY0==1&&KEY1==1&&WK_UP==0)
    {
        key_up=1;
        
    return 0;
  }   
仔细研究研究这里,你加完括号以后跟原程序不一样了。
改成下面这样试试:
else if(KEY0==1&&KEY1==1&&WK_UP==0)
    {
        key_up=1;
     } //括号加到这里
    return 0;
   
回复

使用道具 举报

40

主题

259

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
459
金钱
459
注册时间
2016-5-19
在线时间
192 小时
 楼主| 发表于 2018-6-29 14:41:23 | 显示全部楼层
不加括号就好了
回复

使用道具 举报

40

主题

259

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
459
金钱
459
注册时间
2016-5-19
在线时间
192 小时
 楼主| 发表于 2018-6-29 17:14:45 | 显示全部楼层
kvdong 发表于 2018-6-29 14:40
else if(KEY0==1&&KEY1==1&&WK_UP==0)
    {
        key_up=1;

哦哦哦,谢谢啊,我知道了else if 不加括号只能跟一句
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-26 13:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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