当前位置: 首页 > 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.yayakq.cn/news/660551/

相关文章:

  • 国外用python做的网站盐亭做网站
  • 德令哈网站建设公司沈阳网站制作方法
  • 自己怎样制作网站青岛网站制作多少钱一个
  • 吉林省建设厅安全证查询网站wordpress如何添加首页图片
  • 可以做微课PPT模板 网站学设计的网课
  • 承德网站建设费用wordpress 首页地址
  • 服务器可以做几个网站吗wordpress如何制作网页
  • 建设化工网站的目的网站建设公司专业公司哪家好
  • 东莞机械网站建设免费测名打分测名字打分
  • 湖南衡五建设公司网站国外app界面设计网站
  • 专业网站建设制作多少钱鞍山58同城最新招聘信息
  • 移动网站 模板重庆有线4001
  • 音乐网站用什么语言做济源市建设管理处网站
  • 宜黄县建设局网站公众号seo排名
  • 吉林网站建设司希音跨境电商官网入口
  • 迁安建设局官方网站上优化
  • 收费报名网站怎么做wordpress 插件 弹窗
  • 福鼎市建设局网站logo设计公司 南京
  • 苏州企业网站制作电话荣盛房地产最新消息
  • 建设电子商务网站背景做自媒体可以参考的外国网站
  • 锚文本外链查询网站手机能进封禁网站的浏览器
  • 如何制作app网站宁波市江北区建设局网站
  • 网站建设对图片有哪些要求网站建设公司前台
  • 毕业设计做网站low专门教做西餐的网站
  • 咋样做网站学生可做的网站主题
  • 建设网站的本质揭阳网站建设方案托管
  • 网站建设优化服务器手工制作大全简单
  • 网站开发费用记账丰台建设公司网站
  • 手机上如何制作网站广西网站开发
  • 辽中网站建设河北石家庄网站