当前位置: 首页 > news >正文

限时抢购网站源码百度平台商家联系方式

限时抢购网站源码,百度平台商家联系方式,网站建设方案下载,杭州做网站比较好的公司编写不易,禁止搬运,仅供学习,感谢理解 问题现象 下面是一个在keil5里面写的一个,int类型的返回值函数,这个函数里面,只有if else if else这三个判断条件语句,正常来说任何情况下,…

                                        编写不易,禁止搬运,仅供学习,感谢理解

问题现象

        下面是一个在keil5里面写的一个,int类型的返回值函数,这个函数里面,只有if  else if  else这三个判断条件语句,正常来说任何情况下,函数执行只会执行函数中的其中一个的判断语句条件,不论执行的是哪一个判断语句条件,这个时候都会有函数返回值,函数如下。

int Scanf_Bit_IO_Function(void)
{GLED_Open();if(!LL_GPIO_IsInputPinSet(Scanf_Port, Set_Pin_2)&&!LL_GPIO_IsInputPinSet(Scanf_Port, Set_Pin_1)){GLED_Close();YLED_Open();LL_mDelay(200);Beer_Start();if(LL_GPIO_IsInputPinSet(Scanf_Port, Set_Pin_2)||LL_GPIO_IsInputPinSet(Scanf_Port, Set_Pin_1)){//这个时候短接过后有不断接了,停掉黄灯YLED_Close();return 0;//执行到return 就会结束函数当前调用,因为在while里面就会再次进行调用}}else if(!LL_GPIO_IsInputPinSet(Scanf_Port, Set_Pin_3)&&!LL_GPIO_IsInputPinSet(Scanf_Port, Set_Pin_6)){GLED_Close();YLED_Open();LL_mDelay(200);Beer_Start();if(LL_GPIO_IsInputPinSet(Scanf_Port, Set_Pin_2)||LL_GPIO_IsInputPinSet(Scanf_Port, Set_Pin_1)){		//这个时候短接过后有不断接了,停掉黄灯YLED_Close();return 0;//执行到return 就会结束函数当前调用,因为在while里面就会再次进行调用	}}else{return 1;//这个时候代表没有检测到下拉}}

        当时在实际编译的过程中,keil5编译器是有一条warning的,虽然warning不影响烧录程序,当时为了弄明白是怎么回事,就开始研究了。

..\driver\gpio.c(168): warning:  #940-D: missing return statement at end of non-void function "Scanf_Bit_IO_Function" }
..\driver\gpio.c: 1 warning, 0 errors

        这里的话,这个警告提示我们,这个函数少了一个返回值,当时按照函数逻辑来讲,函数在任何情况下,是不会少返回值的。

问题本质理解

        这个时候需要占在keil5编译器的角度去理解问题,keil5在检查代码的时候,通常只进行静态分析,不会运行代码,他不会尝试所有可以运行的代码路径,在代码里面虽然,if-else if-else包含了所有的可能行,但是编译器不能推断。

        在keil5编译器的角度里面,当if else if的条件为false的时候,同时跳出else这种情况,虽然我们知道这种情况是不可能发生的。

        但是编译器不这么认为,他认为如果发生这种情况仍然,会返回位置的数值。

如何解决问题

        上面已经描述了,出现问题的情况,所以这里只需要把,编译器认为会出现没有返回值的情况,在加上return 1 ; 就可以了。

        

int Scanf_Bit_IO_Function(void)
{GLED_Open();if(!LL_GPIO_IsInputPinSet(Scanf_Port, Set_Pin_2)&&!LL_GPIO_IsInputPinSet(Scanf_Port, Set_Pin_1)){GLED_Close();YLED_Open();LL_mDelay(200);Beer_Start();if(LL_GPIO_IsInputPinSet(Scanf_Port, Set_Pin_2)||LL_GPIO_IsInputPinSet(Scanf_Port, Set_Pin_1)){//这个时候短接过后有不断接了,停掉黄灯YLED_Close();return 0;//执行到return 就会结束函数当前调用,因为在while里面就会再次进行调用}}else if(!LL_GPIO_IsInputPinSet(Scanf_Port, Set_Pin_3)&&!LL_GPIO_IsInputPinSet(Scanf_Port, Set_Pin_6)){GLED_Close();YLED_Open();LL_mDelay(200);Beer_Start();if(LL_GPIO_IsInputPinSet(Scanf_Port, Set_Pin_2)||LL_GPIO_IsInputPinSet(Scanf_Port, Set_Pin_1)){		//这个时候短接过后有不断接了,停掉黄灯YLED_Close();return 0;//执行到return 就会结束函数当前调用,因为在while里面就会再次进行调用	}}else{return 1;//这个时候代表没有检测到下拉}return 1;//加上return 让编译器不会报错
}

                                        欢迎指正,希望对你,有所帮助!!!

http://www.yidumall.com/news/64733.html

相关文章:

  • 建设邮费自己的网站 要不要购买服务器的游戏推广员骗局
  • 自己做视频网站有点卡电商的运营模式有几种
  • 安徽区块链虚拟币网站开发价格北京网络seo经理
  • 做网站需要的导航百度pc端首页
  • 深度网营销型网站建设培训心得体会万能模板
  • 淄博手机网站建设报价最近的头条新闻
  • 网站建设app哪个好用谷歌浏览器下载
  • 网站开发工程师职位概要网站排名seo
  • 中华人民共和国建设部网站seo需要懂代码吗
  • 做网站用什么插件贴吧推广400一个月
  • 打开浏览器自动弹出2345网址导航谷歌seo服务商
  • wikidot怎么建设网站百度图片查找
  • 关于电器网站建设的法律在线推广企业网站的方法有哪些
  • 奉贤做网站的广点通和腾讯朋友圈广告区别
  • wordpress 插件配置文件网站优化内容
  • 网站推广规范系列推广软文范例
  • 注册top域名做公司网站天天seo伪原创工具
  • 南宁营销型网站建设百度关键词多少钱一个月
  • 网站排名怎么上去周口搜索引擎优化
  • 有哪些网站可以做h5产品营销推广策略
  • 中文的网站做不成二维码网络营销工具有哪些?
  • Java网站开发中国知网参考文献上海关键词排名优化怎样
  • 域名主机 网站建设百度搜索入口网址
  • 网站开发框架参考文献长尾关键词挖掘爱站工具
  • 企业网站建设规划 论文杭州网站建设技术支持
  • wordpress 托管主机承德seo
  • 公积金网站怎么做增员网络推广怎么做效果好
  • 深圳网站建设外包公司百度首页排名代发
  • 旅游网站前台模板正规app推广
  • 目前网站开发 用java 还是php北京百度推广优化公司